🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.lang.java
Article #20317

java�� �����������

#20317
From: come on
Date: Fri, 19 Dec 2003 02:08
206 lines
16652 bytes
Ԥ��֪ʶ�� 
��1.�ֽں�unicode 
����Java�ں���unicode�ģ�����class�ļ�Ҳ�ǣ����Ǻܶ�ý�壬�����ļ�/���ı��淽ʽ 
������ʹ���ֽ����ġ� ���JavaҪ����Щ�ֽ�������ת����char��unicode�ģ���byte���ֽ�. 
����Java��byte/char��ת�ĺ�����sun.io�İ��м��С�����ByteToCharConverter�����е��ȣ� 
�����������������㣬���õ�Convertor�����������ܳ��õľ�̬������ 
���� public static ByteToCharConverter getDefault() ; 
���� public static ByteToCharConverter getConverter(String encoding); 
��������㲻ָ��converter����ϵͳ���Զ�ʹ�õ�ǰ��Encoding,GBƽ̨����GBK,ENƽ̨���� 
����8859_1 
���� 
������������һ���򵥵����ӣ� 
����������"��"��gb���ǣ�0xC4E3 ,unicode��0x4F60 
��������������: 
����������--encoding="gb2312"; 
����������--byte b[]={(byte)'u00c4',(byte)'u00E3'}; 
����������--convertor=ByteToCharConverter.getConverter(encoding); 
����������--char [] c=converter.convertAll(b); 
����������--for(int i=0;i ����������--{ 
����������-- System.out.println(Integer.toHexString(c[i])); 
����������--} 
����������--��ӡ������0x4F60 
����������--�������ʹ��8859_1�ı��룬��ӡ������ 
����������--0x00C4,0x00E3 
����������----�� 
�������� �������� 
�������� --encoding="gb2312"; 
�������� ������char c[]={'u4F60'}; 
�������������� convertor=ByteToCharConverter.getConverter(encoding); 
����������--byte [] b=converter.convertAll(c); 
����������--for(int i=0;i ����������--{ 
����������-- System.out.println(Integer.toHexString(b[i])); 
����������--} 
������������--��ӡ�����ǣ�0xC4,0xE3 
������������----�� 
������������--�����8859_1����0x3F��?�ţ���ʾ�޷�ת��������������-- 
���������� �ܶ�����������Ǵ���������򵥵�����������ġ���ȴ�кܶ��ࡡ�� 
������ֱ��֧�ְ�Encoding���룬������Ǵ�����಻�㡣�ܶ�����ѵ���encoding 
�����ˣ�ֱ����default��encoding����͸�������ֲ�����˺ܶ����� 
����-- 
����2.UTF-8 
����--UTF-8�Ǻ�Unicodeһһ��Ӧ�ģ���ʵ�ֺܼ� 
����-- 
���� -- 7�Unicode: 0 _ _ _ _ _ _ _ 
����--11�Unicode: 1 1 0 _ _ _ _ _ 1 0 _ _ _ _ _ _ 
����--16�Unicode: 1 1 1 0 _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _ 
����--21�Unicode: 1 1 1 1 0 _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _ 
����--����������ֻʹ�õ�16λ���µ�Unicode: 
����--"��"��gb���ǣ�0xC4E3 ,unicode��0x4F60 
����--���ǻ�������������� 
����--����--��0xC4E3�Ķ����ƣ� 
����--����--������ 1 1 0 0 0 1 0 0 1 1 1 0 0 0 1 1 
����--����--������ ����ֻ����λ���ǰ�����λ�ı������ţ��������Ƿ������в�ͨ�� 
����--����--������ ��Ϊ�ڣ�λ����0��ˣ�����"?" 
����--����--������ 
����--����--��0x4F60�Ķ����ƣ� 
����--����--������ 0 1 0 0 1 1 1 1 0 1 1 0 0 0 0 0 
����--����--������ ������UTF-8���룬��ɣ� 
����--����--������ 11100100 10111101 10100000 
����--����--������ E4--BD-- A0 
����--����--������ ���Ƿ���0xE4,0xBD,0xA0 
����--����-- 
����3.String��byte[] 
����--String��ʵ������char[],Ȼ��Ҫ��byteת����String�����뾭����롣 
����--String.length()��ʵ����char����ij��ȣ����ʹ�ò�ͬ�ı��룬�ܿ� 
����--�ܻ��֣����ɢ�ֺ����롣 
����--�� 
����----byte [] b={(byte)'u00c4',(byte)'u00e3'}; 
����----String str=new String(b,encoding);����---- 
����----���encoding=8859_1�����������֣�����encoding=gb2312ֻ��һ���֡���---- 
����--��������ڴ����ҳ�Ǿ������� 
����4.Reader,Writer/InputStream,OutputStream 
����--Reader��Writer������char��InputStream��OutputStream������byte�� 
����--����Reader��Writer����ҪĿ����Ҫ��Char��/дInputStream/OutputStream 
--һ��reader�����ӣ� 
--�ļ�test.txtֻ��һ��"��"�֣�0xC4,0xE3-- 
--String encoding=; 
--InputStreamReader reader=new InputStreamReader( 
----new FileInputStream("text.txt"),encoding); 
--char []c=new char[10]; 
--int length=reader.read(c); 
--for(int i=0;i ----System.out.println(c[i]); 
����--���encoding��gb2312����ֻ��һ���ַ����encoding=8859_1�����������ַ� 
����-------- 
-- 
-- 
���� 
���� ---- 
��2.����Ҫ��Java�ı����������˽⣺ 
��--javac -encoding 
�� ���dz���û���õ�ENCODING���������ʵEncoding���������ڿ�ƽ̨�IJ����Ǻ���Ҫ�ġ� 
�� ���û��ָ��Encoding������ϵͳ��Ĭ��Encoding,gbƽ̨����gb2312��Ӣ��ƽ̨����ISO8859_1���� 
��--Java�ı�����ʵ�����ǵ���sun.tools.javac.Main���࣬���ļ����б��룬����ࡡ-- 
����compile�����м���һ��encoding�ı���,-encoding�IJ�����ʵֱ�Ӵ���encoding������ 
�����������Ǹ�������������ȡjava�ļ��ģ�Ȼ�����UTF-8��ʽ�����class�ļ��� 
��һ�����ӣ� 
��--public void test() 
��--{ 
��----String str="��"; 
��----FileWriter write=new FileWriter("test.txt"); 
��----write.write(str); 
��----write.close(); 
��--} 
��----�� 
--�����gb2312���룬����ҵ�E4 BD A0���ֶ� 
-- 
--�����8859_1���룬 
--00C4 00E3�Ķ����ƣ� 
--00000000 11000100 00000000 11100011-- 
--��Ϊÿ���ַ����7λ�������11λ���룺 
--11000001 10000100 11000011 10100011 
--C1-- 84--��C3--�� A3 
--����ҵ�C1 84 C3 A3 -- 
�������� 
������������������Ե���������������������п�ƽ̨�����⣺ 
����--������������ƽ̨�ϱ��룬���ZhClass 
����--��������Ӣ��ƽ̨�ϱ��룬���EnClass 
����--1.�� ZhClass������ƽ̨��ִ��OK,������Ӣ��ƽ̨�ϲ��� 
����--2.�� EnClass��Ӣ��ƽ̨��ִ��OK,����������ƽ̨�ϲ��� 
����ԭ�� 
��--1.������ƽ̨�ϱ������ʵstr������̬��char[]��0x4F60,��---- 
��--������ƽ̨�����У�FileWriter��ȱʡ������gb2312,��� 
��--CharToByteConverter���Զ��õ���gb2312��converter,��strת�� 
��--��byte���뵽FileOutputStream�У�����0xC4,0xE3�Ž����ļ��� 
��--�����������Ӣ��ƽ̨�£�CharToByteConverter��ȱʡֵ��8859_1, 
��--FileWriter���Զ�����8859_1ȥת��str,�������޷����ͣ������� 
��--���"?"��---- 
��--2.����Ӣ��ƽ̨�ϱ������ʵstr������̬��char[]��0x00C4 0x00E3,��---- 
��--������ƽ̨�����У������޷�ʶ����˻����?? 
��--������Ӣ��ƽ̨�ϣ�0x00C4-->0xC4,0x00E3->0xE3�����0xC4,0xE3���Ž��� 
��--�ļ� 
---- 
1.����JSP���ĵĽ��ͣ� 
--Tomcat���ȿ�һ�����Ҷ������û��" 


http://localhost/test/test.jsp?value=�� 

���:����� 

�����ַ��������Խϴ󣬱�����ϴ������·ֶΣ�����������������ģ���õ� 
��������������ַ����� 


��� 



�ض�����,������������ҹ�ά 


-------------------------------------------------------------------------------- 

1.��ҳ�������ᳫ��get����,�����û����Ե����Ƿ���utf-8���� 
2.����jsp����ò�Ҫ��,ʵ���ϼӲ�����䶼��ʵ����������ʾ�ķ���,����Ϊ���ӷ���Щ,���ٲ���д��Щ����,���µ���������Ϊ����ʹ��������ʾ: 
a.���е�javabean��iso8859-1���� 
b.jsp�ļ��в�Ҫд����charset=gb2312�����(д�˷����) 

��tomcat�����ע������2�����---��,�ȵ�,���������п��ܲ��е�jsp������,�������� 
c.�������ϵIJ���ϵͳ������ΪӢ��(��û��װ����bluepoint����ϵͳ��linuxһ�㱾������Ӣ��) 
����---�� 

˭Ҫ�ǻ�����,�뱨��.... 


Re���ض�����,������������ҹ�ά 


-------------------------------------------------------------------------------- 

Tomcat�IJ�������������GET����POST��ʽ������8859_1����ġ�������Կ�Tomcat Servletʵ�ֵ�Դ����: 
a) ����POST���� 
��javax.servlet.http.HttpUtils��parsePostData������ (����POST��Form���) 
��String postedBody = new String(postedBytes, 0, len, "8859_1");)������û���������Ϊ���Ķ�����%��˵��������parseName�������ȴû�а������ĵĶ��������������ֻ�Ǽ򵥵�ƴ�գ���˿����϶�����ʹ��8859_1�ı������ 
�� sb.append((char) Integer.parseInt(s.substring(i+1, i+3), 16)); 
----����i += 2; 
-- 
b) ����GET���� 
��org.apache.tomcat.service.http.HttpRequestAdapter 
������--��line=new String(buf, 0, count, 
������������ Constants.CharacterEncoding.Default); 
----Constants.CharacterEncoding.Default=8859_1 
����δ��벻�ø��٣�ǧ��Ҫ��һЩ�����Ի�ס��HttpRequestAdapter�Ǵ�RequestImpl������ġ����ǣ�ʵ������8080�˿ڵ�Server��û��ֱ���õ�RequestImpl����������HttpRequestAdapter�����queryString 

���ڼӲ���encoding���ұ����ҵ������Ϊ���Ҫ����ϴ��ļ���ҳ���⣬����Ҫ���������롣���ұ����ܱ�֤��һЩBeans���еĴ����ԡ� 

������Ҫ������˵��һ���� 


-------------------------------------------------------------------------------- 

Tomcat������һ����jsp1.1,servlet2.2��һ����׼��ʵ��,���Dz�Ӧ��Ҫ�������������ϸ��ĩ���Ϻ������϶�����㵽,����Ҫ���ǵ�Ӣ���û�,��Ҳ��Ϊʲô��������ת�����ǵĺ�����url���������������ԭ��,���Ǵ󲿷������ie��߼�������ʼ����utf-8����url��ѡ��ȱʡ��ѡ��
��,���˵����tomcat��bugҲ�ǿ��Ե�,����Tomcat���ܵ�ǰ�IJ���ϵͳ��ʲô����,���񶼰�iso8859ȥ����jsp,�Ҿ���Ҳ�е�Ƿ��,���Dz�����ô˵,�±�׼��ʵ�ֺ����ŵ���������Ե�֧�ַ�����Զ�����ȿ���Ӣ�� 

�ҵķ���ʲô˵Ҫ��һЩ�� 
1.�����Ǿ仰,Ӣ�Ĺ�ҵ������Զ�����ȿ���Ӣ��,java�����Ĺ淶��Ҫ��������ڲ�����ʵ��iso8859,unicode,UTF-8����,����IJ���Ҫ��,�����õ�jdk�е�������������,Ƕ��ʽ�ľ͸���˵��,Ҳ����˵�����ENCODE���ܿ��ܲ���java������ڲ�ֱ��֧�ֵ�,���ǵ�������ȻҲ���
�����,��Ҫ�ⲿ�İ�֧��ת��,sun jdkӦ����i18n.jar��,��iso8859�ٶ����,����Ҫ������úͽ���ʲô��,��û�ж����io���� 
2.������д�˴���,û�ж������,���ķ��˭��ϲ�� 
3.��д��jspҳ�����Ի���,�Ҳ�д��һ��jsp+javabeans�����������(û���õ�servlet,jsp���ȷʵ�ܺ�),ͬ��ij��������������ǵ�������������Ӣ�Ľ���,���Ľ���������Ľ���,������charset=gb2312���ٺ��鷳 
4.�޶���gb2312,����û�Ҫ��GBK,��ô��,���Ӹ��,����ʲô���ַ�,ֻҪ�ҵ�ǰ������趨����,�Ҿ�����ʾ���� 

�ܽ�:���۴��ٶ���,����Ч����,�Ϳ���չ���Ͽ���,�ҵķ���������ĺ�,����,���Ҳ�����ķ������ҵĺõĵط�. 


--
�� ��Դ:��Ʈ��ˮ�Ƽ� Freecity.dhs.org��[FROM: succeed]
Technical Details
Message-ID: <49hMeC$AqJ@Freecity.dhs.org>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!news2.google.com!news.maxwell.syr.edu!fr.ip.ndsoftware.net!news.primus.ca!news.primus.ca!ctu-peer!news.nctu.edu.tw!netnews.csie.nctu.edu.tw!maily.cic.tsinghua.edu.cn!news.ccie.net.cn!Freecity

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: f6cb0,c7f4762d1d1ac479,start
X-Google-Attributes: gidf6cb0,public
X-Google-ArrivalTime: 2003-12-22 03:05:58 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!news2.google.com!news.maxwell.syr.edu!fr.ip.ndsoftware.net!news.primus.ca!news.primus.ca!ctu-peer!news.nctu.edu.tw!netnews.csie.nctu.edu.tw!maily.cic.tsinghua.edu.cn!news.ccie.net.cn!Freecity
From: succeed.bbs@Freecity.dhs.org (come on )
Newsgroups: cn.bbs.comp.lang.java
Subject: java�� ����������� 
Date: 19 Dec 2003 02:08:29 GMT
Organization: Ʈ��ˮ�Ƽ�
Message-ID: <49hMeC$AqJ@Freecity.dhs.org>
Mime-Version: 1.0
Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: 8bit
X-Filename: Java/M.1071799692.A
Lines: 206