|
|
Java中文问题 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
在处理中文的时候经常是new String(str.getBytes("编码方式1"), "编码方式2"); 在这里我的理解有3点: 1。java里的字符串都是Unicode来表示的 2。String.getBytes("编码方式")是将用unicode表示的字符串 按照指定的编码方式转换 为一个byte数组 3。new String(byte[], "编码方式"),则是将给定的byte数组按照指定编码方式来解释, 得到一个unicode编码的字符串。
而通常的乱码问题是因为: 传送字符串给java程序时,没有考虑读入的字符串的实际编码类型(GBK),统一按照某一 编码方式(比如8859)来编码,这样我们在程序里就需要先getBytes("8859")还原得到 按照实际编码类型组织的byte数组,然后在new String(byte, "GBK")就可以得到正确的 字符串了.
以上是我对中文问题的理解。 我的说法是否正确的关键是上面我列出的那3点是不是正确的。 问题已经困饶我好久了,请高手指点。 多谢,多谢。
--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.183.50] 发信人: FoolsGarden (和水木清华谈恋爱), 信区: Java 标 题: Re: 问个java中文的问题 发信站: BBS 水木清华站 (Sat Mar 10 13:59:34 2001)
关于这个问题,我曾经有过研究,你的理解错了,呵呵 【 在 goldstar (淡水河畔的烟火) 的大作中提到: 】 : 在处理中文的时候经常是new String(str.getBytes("编码方式1"), "编码方式2"); : 在这里我的理解有3点: : 1。java里的字符串都是Unicode来表示的 默认编码 : 2。String.getBytes("编码方式")是将用unicode表示的字符串 按照指定的编码方式转换 : 为一个byte数组 这个没有错,不过本来就是这样的 : 3。new String(byte[], "编码方式"),则是将给定的byte数组按照指定编码方式来解释, : 得到一个unicode编码的字符串。 这个错了,也是你有错误结论的地方 : 而通常的乱码问题是因为: : 传送字符串给java程序时,没有考虑读入的字符串的实际编码类型(GBK),统一按照某一 : 编码方式(比如8859)来编码,这样我们在程序里就需要先getBytes("8859")还原得到 : 按照实际编码类型组织的byte数组,然后在new String(byte, "GBK")就可以得到正确的 : ...................
-- 秀才戒网了……
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.77.2] 发信人: goldstar (淡水河畔的烟火), 信区: Java 标 题: Re: 问个java中文的问题 发信站: BBS 水木清华站 (Sat Mar 10 14:02:25 2001)
呵呵,太好了,请指点一下吧。 多谢,多谢 //bow
【 在 FoolsGarden (和水木清华谈恋爱) 的大作中提到: 】 : 关于这个问题,我曾经有过研究,你的理解错了,呵呵 : 默认编码 : 这个没有错,不过本来就是这样的 : 这个错了,也是你有错误结论的地方
--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.183.50] 发信人: goldstar (淡水河畔的烟火), 信区: Java 标 题: Re: 问个java中文的问题 发信站: BBS 水木清华站 (Sat Mar 10 14:04:22 2001)
new String到底是什么意思? //bow
【 在 FoolsGarden (和水木清华谈恋爱) 的大作中提到: 】 : 关于这个问题,我曾经有过研究,你的理解错了,呵呵 : 默认编码 : 这个没有错,不过本来就是这样的 : 这个错了,也是你有错误结论的地方
--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.183.50] 发信人: FoolsGarden (和水木清华谈恋爱), 信区: Java 标 题: Re: 问个java中文的问题 发信站: BBS 水木清华站 (Sat Mar 10 14:05:30 2001)
类的构造,就是一个实例产生了 【 在 goldstar (淡水河畔的烟火) 的大作中提到: 】 : new String到底是什么意思? : //bow
-- 秀才戒网了……
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.77.2] 发信人: goldstar (淡水河畔的烟火), 信区: Java 标 题: Re: 问个java中文的问题 发信站: BBS 水木清华站 (Sat Mar 10 14:47:20 2001)
不是,我是问,new String(byte[], "encodeMethod"); 中指定的编码方式和byte数组的关系是什么?
【 在 FoolsGarden (和水木清华谈恋爱) 的大作中提到: 】 : 类的构造,就是一个实例产生了
--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.183.50] 发信人: FoolsGarden (和水木清华谈恋爱), 信区: Java 标 题: Re: 问个java中文的问题 发信站: BBS 水木清华站 (Sat Mar 10 14:54:02 2001)
byte是什么,就是2进制数的三说 当然计算机中信息都是以二进制存储的,编码方式的指定 只是为构造String类是对byte数组怎么解码后构成String 的,如果编码方式不同,相信Sring也不一样 【 在 goldstar (淡水河畔的烟火) 的大作中提到: 】 : 不是,我是问,new String(byte[], "encodeMethod"); : 中指定的编码方式和byte数组的关系是什么?
-- 秀才戒网了……
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.77.2] 发信人: goldstar (淡水河畔的烟火), 信区: Java 标 题: Re: 问个java中文的问题 发信站: BBS 水木清华站 (Sat Mar 10 14:58:05 2001)
那我第3点错在哪呢?
呵呵,我悟性不高,还请指点的说 //blush //bow 【 在 FoolsGarden (和水木清华谈恋爱) 的大作中提到: 】 : byte是什么,就是2进制数的三说 : 当然计算机中信息都是以二进制存储的,编码方式的指定 : 只是为构造String类是对byte数组怎么解码后构成String : 的,如果编码方式不同,相信Sring也不一样
--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.183.50] 发信人: FoolsGarden (和水木清华谈恋爱), 信区: Java 标 题: Re: 问个java中文的问题 发信站: BBS 水木清华站 (Sat Mar 10 15:01:10 2001)
得到unicode有误,自己理解吧,我要走了 【 在 goldstar (淡水河畔的烟火) 的大作中提到: 】 : 那我第3点错在哪呢? : 呵呵,我悟性不高,还请指点的说 //blush : //bow
-- 秀才戒网了……
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.77.2] 发信人: goldstar (淡水河畔的烟火), 信区: Java 标 题: Re: 问个java中文的问题 发信站: BBS 水木清华站 (Sat Mar 10 15:04:20 2001)
好吧,多谢指点 //bow
【 在 FoolsGarden (和水木清华谈恋爱) 的大作中提到: 】 : 得到unicode有误,自己理解吧,我要走了
--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.183.50] 发信人: goldstar (淡水河畔的烟火), 信区: Java 标 题: Re: 问个java中文的问题 发信站: BBS 水木清华站 (Sat Mar 10 15:11:35 2001)
我觉得是new String(byte[], "编码方式")中,按照编码方式来解释byte数组 得到一个按指定编码方式编码字符串,又因为java里字符串都是Unicode表示的。 所以,最终是得到了一个Unicode的字符串
【 在 FoolsGarden (和水木清华谈恋爱) 的大作中提到: 】 : 得到unicode有误,自己理解吧,我要走了
--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.183.50] 发信人: goldstar (淡水河畔的烟火), 信区: Java 标 题: Re: 问个java中文的问题 发信站: BBS 水木清华站 (Sat Mar 10 15:20:22 2001)
领悟了,领悟了,的确错了。 感谢FoolsGarden的大力帮助。 //bow 也祝愿本版越来越火 【 在 goldstar (淡水河畔的烟火) 的大作中提到: 】 : 我觉得是new String(byte[], "编码方式")中,按照编码方式来解释byte数组 : 得到一个按指定编码方式编码字符串,又因为java里字符串都是Unicode表示的。 : 所以,最终是得到了一个Unicode的字符串

|
|
相关文章:相关软件: |
|