|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
Java 语言默认的编码方法是UNICODE ,而我们中国人通常使用的文件和数据库都是基于 GB2312 或者 BIG5 等方法编码的,怎样才能够恰当地选择汉字编码方法并准确地处理汉字的编码呢?本文将从汉字编码的常识入手,结合 Java 编程实例,分析以上两个问题并提出解决它们的方案: 1.在JSP程序中加入一条语句: <%@page contentType="text/html;charset=gb2312" %> 2.在URL请示字符串的编码问题。 假如通过GET/POST方式从客户端传递过来的信息中包含汉字信息,SERVLET/JSP无法得到准确的值。 我们在调用request.getParameter("param_name")前指定应用程序所希望的编码方法。 也就是request.setCharacterEcoding()即可 3.在不同的平台编码的问题是不同的。 在linux平台上的标准是Iso8859_1,而在win2k下是GBK的,这些是默认的标准,假如你的服务器不是这样的,那么编译的问题一定会有问题。本人就碰到这样的问题,两台LINUX服务器,一台lang=en,一台lang=en,UTF8,被我搞了N长时间才找到原因。 3.我本人用的最多的转变编码的一个类(在linux平台),几乎可以解决所有的编码问题。类的方式异常解决。主要就是asc2gb()和gb2asc()这两个类。 package com.whaic.tools; import java.io.UnsupportedEncodingException; public class ECov { public static String asc2gb(String asc){ String ret; if(asc==null)return asc; try{ ret=new String(asc.getBytes("ISO8859_1"),"GB2312"); } catch(UnsupportedEncodingException e){ ret=asc; } return ret; } public static String gb2asc(String gb){ String ret; if(gb==null)return gb; try{ ret=new String(gb.getBytes("GB2312"),"ISO8859_1"); } catch(UnsupportedEncodingException e){ ret=gb; } return ret; } } 4.读写文件时的中文问题: Read:: FileInputStream fis = new FileInputStream(strInFile); InputStreamReader isr = new InputStreamReader(fis, "GB2312"); Reader in = new BufferedReader(isr); int ch; while ((ch = in.read()) > -1) { iCharNum += 1; buffer.append((char)ch); } in.close(); Write:: FileOutputStream fos = new FileOutputStream(strOutFile); Writer out = new OutputStreamWriter(fos, "Big5"); out.write(str); out.close(); 以上仅仅是本人是日常使用中碰到的一些问题和解决方案。由于国际化的工作并不是在海内完成的,所以在这些基本类发布之前,没有经过严格的测试,所以对中文字符的支持并不像 Java Soft 所声称的那样完美。Java 编程语言成长于网络世界,这就要求 Java 对多国字符有很好的支持。 Java 编程语言适应了计算的网络化的需求,为它能够在网络世界快速成长奠定了坚实的基础。 Java 的缔造者 (Java Soft)已经考虑到 Java 编程语言对多国字符的支持,只是现在的解决方案有很多缺陷在里面,需要我们付诸一些补偿性的措施。而世界标准化组织也在努力把人类所有的文字统一在一种编码之中,其中一种方案是 ISO10646 ,它用四个字节来表示一个字符。当然,在这种方案未被采用之前,还是希望 Java Soft 能够严格地测试它的产品,为用户带来更多的方便。 返回类别: 教程 上一教程: JAVA类型和SQL类型的匹配 下一教程: 在Java中获取系统属性 您可以阅读与"JAVA编码问题的一些理解"相关的教程: · JAVA编码问题的一些理解 · Java 字符编码问题 · 学习java需要知道的一些问题 · Java 关于中文乱码问题的解决方案与经验 (2) · 对Java同步一些理解 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |