当前位置:早雪网网络学院编程文档Java → 汉字问题深入谈

汉字问题深入谈

减小字体 增大字体 作者:不详  来源:supcode.com收集整理  发布时间:2005-7-22 18:52:23
一步 JAVA先和操作系统交流,这时解析错误 
04: B5B6B7B8 getBytes()第二步 然后返回字节数组 
05: C5C6 new String()第一步 JAVA先和操作系统交流 
06: U3U4 new String()第二步 然后返回字符 
07: C5C6 println(String) 虽然同是两个字符,但已不是最初的“两个ISO8859_1字 

符”,而是“两个BGK字符”,“中”显示成了“??” 
而“中文”就显示成了“????” 

2.6.2)下面我们以代码段12为例,因为它能正确显示汉字 

步骤 内容 地点 说明 

01: C1C2 HelloWorld.java C1C2分别泛指一个ISO8859_1字符,“中”字被拆开 
02: U3U4 JAVAC读取 U1U2泛指一个Unicode字符
03: C1C2 getBytes()第一步 JAVA先和操作系统交流(注意还是正确的哦!) 
04: B5B6 getBytes()第二步 然后返回字节数组(这是很关键的一步!) 
05: C12 new String()第一步 JAVA先和操作系统交流(这是更关键的一步,JAVA已经知道B5B6要解析成一个汉字!) 
06: U7 new String()第二步 然后返回字符(真是一个项两!U7包含了U3U4的信息) 
07: C12 println(String) 这就原来的“中”字,很委屈被JAVAC冤枉了一回,不过被程序员拨乱反正了一下!当然,“中文”两个字都能正确显示了! 

3)那为什么有的时候用JDBC的 
new String(Recordset.getBytes(int)[,encode]) 
Recordset.getSting(int) 
Recordset.setBytes(String.getBytes([encode])) 
和 
Recordset.setString(String) 
的时候会出现乱码了呢? 

其实问题就出现在编写JDBC的的也考虑了编码问题,它从数据库读取数据后,可能自作主张做了一个从GB2312(默认编码)到Unicode的转换,我的这个WebLogic For SQL Server的JDBC Driver就是这样的,当我读字串的时候,发出读到的不是正确的汉字,可恨的是我却可以直接写汉字字串,这让人多少有点难以接受! 
也就是说,我们不得不在读或写的时候进行转码,尽管这个转码有的时候不是那么明显,这是因为我们使用了默认的编码进行转码。JDBC Driver所做的操作,我们只有进入到源代码内部才能清楚,不是吗?

上一页  [1] [2] 


Tags:汉字,问题,深入
[数据载入中...] [返回上一页] [打 印]