下载首页 | 资讯中心 | 下载分类 | 最近更新 | 排 行 榜 | 国产软件 | 国外软件 | 汉化补丁 |
文章搜索: 分类 关键字 收藏本站设为首页
您的位置:首页网页设计ASP程序 → Java中文问题及最优解决方法__教程
Java中文问题及最优解决方法__教程
日期:2007-5-20 0:36:34 人气:115     [ ]
上一页 [1] [2] [3] [4] [5] 下一页
unicode和UTF-8编码是一一对应的关系。GB2312可以认为是GBK的子集,即GBK编码是在gb2312上扩展来的。同时,GBK编码包含了20902个汉字,编码范围为:0x8140-0xfefe,所有的字符可以一一对应到UNICODE2.0中来。 

再次,对于放在操作系统中的.java源程序文件,在编译时,我们可以指定它内容的编码格式,具体来说用-encoding来指定。注意:如果源程序中含有中文字符,而你用-encoding指定为其它的编码字符,显然是要出错的。用-encoding指定源文件的编码方式为GBK或gb2312,无论我们在什么系统上编译含有中文字符的JAVA源程序都不会有问题,它都会正确地将中文转化为UNICODE存储在class文件中。 

然后,我们必须清楚,几乎所有的WEB容器在其内部默认的字符编码格式都是以ISO-8859-1为默认值的,同时,几乎所有的浏览器在传递参数时都是默认以UTF-8的方式来传递参数的。所以,虽然我们的Java源文件在出入口的地方指定了正确的编码方式,但其在容器内部运行时还是以ISO-8859-1来处理的。 

4、中文问题的分类及其建议最优解决办法 

了解以上JAVA处理文件的原理之后,我们就可以提出了一套建议最优的解决汉字问题的办法。 
我们的目标是:我们在中文系统中编辑的含有中文字符串或进行中文处理的JAVA源程序经编译后可以移值到任何其它的操作系统中正确运行,或拿到其它操作系统中编译后能正确运行,能正确地传递中文和英文参数,能正确地和数据库交流中英文字符串。 
我们的具体思路是:在JAVA程序转码的入口和出口及JAVA程序同用户有输入输出转换的地方限制编码方法使之正确即可。 

具体解决办法如下: 

1、 针对直接在console上运行的类 
对于这种情况,我们建议在程序编写时,如果需要从用户端接收用户的可能含有中文的输入或含有中文的输出,程序中应该采用字符流来处理输入和输出,具体来说,应用以下面向字符型节点流类型: 
对文件:FileReader,FileWrieter  
其字节型节点流类型为:FileInputStream,FileOutputStream 
对内存(数组):CharArrayReader,CharArrayWriter 
其字节型节点流类型为:ByteArrayInputStream,ByteArrayOutputStream 
对内存(字符串):StringReader,StringWriter 
对管道:PipedReader,PipedWriter 
其字节型节点流类型为:PipedInputStream,PipedOutputStream 
同时,应该用以下面向字符型处理流来处理输入和输出: 
BufferedWriter,BufferedReader 
其字节型的处理流为:BufferedInputeStream,BufferedOutputStream 
InputStreamReader,OutputStreamWriter 
其字节型的处理流为:DataInputStream,DataOutputStream 
其中InputStreamReader和InputStreamWriter用于将字节流按照指定的字符编码集转换到字符流,如: 
InputStreamReader in = new InputStreamReader(System.in,"GB2312"); 
OutputStreamWriter out = new OutputStreamWriter (System.out,"GB2312"); 
例如:采用如下的示例JAVA编码就达到了要求: 

//Read.java 
import java.io.*; 
public class Read { 
public static void main(String[] args) throws IOException { 
String str = "\n中文测试,这是内部硬编码的串"+"\ntest english character"; 
String strin= ""; 
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in,"gb2312")); //设置输入接口按中文编码 
BufferedWriter stdout = new BufferedWriter(new OutputStreamWriter(System.out,"gb2312")); //设置输出接口按中文编码 
stdout.write("请输入:"); 
stdout.flush(); 
strin = stdin.readLine(); 
stdout.write("这是从用户输入的串:"+strin); 
stdout.write(str); 
stdout.flush(); 
}} 
同时,在编译程序时,我们用以下方式来进行: 
javac -encoding gb2312 Read.java 
其运行结果如图5所示: 




图5(不好意思,图传不上来,只好让大家自己去想像图的样子了,我想看了上文是可以想来图来的。) 

2、 针对EJB类和不可以直接运行的支持类(如JavaBean类) 

由于这种类它们本身被其它的类调用,不直接与用户交互,故对这种类来说,我们的建议的处理方式是内部程序中应该采用字符流来处理程序内部的中文字符串(具体如上面一节中一样),同时,在编译类时用-encoding gb2312参数指示源文件是中文格式编码的即可。 
出处:本站原创 作者:佚名
 阅读排行
01.精美qq空间横幅代码
02.最酷qq个性女生网名
03.最新又有免费QQ秀啦《..
04.巧用透明FlaSh扮靓你的..
05.花之神匠代码(最新代码..
06.最新QQ空间免费导航
07.最新免费个人形象设置..
08.最新qq空间flash代码m..
09.CSS技术结合图像实现动..
10.Photoshop光影魔术师:..
11.QQ音速种子狂刷
12.最新QQ空间透明代码
13.PS实例教程:教你制作结..
14.Photoshop光影魔术师:..
15.制作背景图__教程
16.用Photoshop制作漂亮的..
17.如何获得QQ音速种子
18.≤QQ空间代码≥在日志..
19.网页浮动广告的制作代..
20.用Photoshop制作大红灯..
21.常用CSS
22.Photoshop给靓丽美女打..
 推荐文章
·Photoshop 表现技法之..
·快速将你的相片矢量化..
·PHOTOSHOP制作炽热的太..
·用Photoshop制作美丽的..
·流行杀手的娃娃工厂__..
·打造8号台球__教程
·PHOTOSHOP制作待机MM图..
·用Photoshop帮MM做纹身..
·PHOTOSHOP美眉着色绝招..
·PHOTOSHOP花露的制作_..
·PHOTOSHOP渐变工具的巧..
·PHOTOSHOP手绘奥兰多-..
·高难度抠图两种方法__..
·Photoshop高尔夫球的制..
·Photoshop打造精美玉佩..
Eqxia_COM下载站 版权所有 Copyright© 2001-2005 Www.eqxia.COM, All Rights Reserved.