🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

��תһƪ�������ı����

#11766
From: ������
Date: Tue, 24 Aug 2004 12:24
178 lines
12427 bytes
Java�����������

����˵һ��tomcat���ʵ��JSP����������ˡ�
Ԥ��֪ʶ��
��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<c.length;c++)
����������--{
����������-- 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<b.length;c++)
����������--{
����������-- 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<c.length;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���ȿ�һ�����Ҷ������û��"<%@page include�ķ�š��У�������ͬ
--�ط��趨response.setContentType(..);����encoding��������û������8859_1
--��ȡ�ļ���Ȼ����UTF-8д��.java�ļ���Ȼ����sun.tools.Mainȥ��ȡ����ļ���
--����Ȼ��ʹ��UTF-8ȥ������Ȼ������class�ļ�
--setContentType�ı����out�����ԣ�out����ȱʡ��encoding��8859_1

2.��Parameter�Ľ���
--�ܲ���Parameterֻ��ISO8859_1�Ľ��ͣ�������Ͽ�����servlet��ʵ�ִ������ҵ���

3.��include�Ľ���
��ʽ�ģ����Ǻܲ��ң������Ǹ�д"org.apache.jasper.compiler.Parser"����
������JspUtil.ValidAttribute[]��Ǽ���һ������encoding,��˵��²�֧
�����ַ�ʽ������ȫ���Ա���Դ���룬���϶�encoding��֧��

�ܽ᣺

�������NT���£���򵥵ķ���������ƭjava,�����κ�Encoding������
<html>
���<%=request.getParameter("value")%>
</html>

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

���:�����

�����ַ��������Խϴ󣬱�����ϴ������·ֶΣ�����������������ģ���õ�
��������������ַ�����
<%@ page contentType="text/html;charset=gb2312" %>
<html>
���<%=new String(request.getParameter("value").getBytes("8859_1"),"gb2312")%>
</html>

--

û�к���׳�ֻ����һ�䣺

~~���죬���Լ��ˮ����

�� ��Դ:�������ʵBBS bbs.tju.edu.cn��[FROM: 202.113.12.91]
Technical Details
Message-ID: <4DkGJ7$9yT@bbs.tju.edu.cn>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!news.maxwell.syr.edu!wns13feed!worldnet.att.net!63.223.20.72!sjc1.usenetserver.com!news.usenetserver.com!news.bylinux.net!netnews.sdu.edu.cn!news2.happynet.org!TJUBBS

Show Full Headers
Complete Article Headers
X-Google-Thread: f6cb0,aac63852702ce22d,start
X-Google-Attributes: gidf6cb0,public
X-Google-Language: Chinese,GB
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!news.maxwell.syr.edu!wns13feed!worldnet.att.net!63.223.20.72!sjc1.usenetserver.com!news.usenetserver.com!news.bylinux.net!netnews.sdu.edu.cn!news2.happynet.org!TJUBBS
From: trotin.bbs@bbs.tju.edu.cn.no.spam (������)
Newsgroups: cn.bbs.comp.lang.java
Subject: ��תһƪ�������ı����
Date: 24 Aug 2004 12:24:55 GMT
Organization: �����ʵBBSվ
Message-ID: <4DkGJ7$9yT@bbs.tju.edu.cn>
Mime-Version: 1.0
Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: 8bit
X-Filename: Java/M.1093350295.A
Lines: 178