java中的编码问题。编码转换,编码大神进。

java中的编码问题。编码转换,编码大神进。,第1张

"陈可辛"getBytes("utf-8"), ==>0xE9 0x99 0x88 0xE5 0x8F 0xAF 0xE8 0xBE 0x9B

new String("陈可辛"getBytes("utf-8"),"GBK") ==> 上面9个byte数字,从左到右,两个byte组成一个汉字,但最后一个是0x9B,在gbk里面没有这个,所以用一个“�”表示,识别不了。==> 闄埚彲杈�

“闄埚彲杈�”getBytes("GBK") ==> 每个汉字拆成两个字节,最后一个因为识别不了,所以用 表示,即byte中的0x3F,也就是63,你可以查一下ASCII表。==>

0xE9 0x99 0x88 0xE5 0x8F 0xAF 0xE8 0xBE 0x3F

然后上面9个byte,按utf-8的规则解,由于最后一个都变了,所以最后一个解错了

c:\Java\jdk160_05\bin中有个native2asciiexe文件就是了

使用:在这个bin文件夹中有atxt它的内容是汉字“你好”,在DOS提示符(环境变量要配置)或者进入bin目录下输入 native2ascii atxt btxt

然后bin文件夹里就生成btxt,打开btxt你会看到/u4f60/u597d

反过来就是Unicode转汉字

1、Java中,StringgetBytes(String decode)的方法,会根据指定的decode,编码返回某字符串在该编码下的byte数组表示,例如:

byte[] b_gbk = "中"getBytes("GBK");

byte[] b_utf8 = "中"getBytes("UTF-8");

byte[] b_iso88591 = "中"getBytes("ISO8859-1")

上面三行代码表示:分别返回“中”这个汉字在GBK、UTF-8和ISO8859-1编码下的byte数组表示,此时b_gbk的长度为2,b_utf8的长度为3,b_iso88591的长度为1。

2、而通过new String(byte[], decode)的方式来还原这个“中”字时,实际是使用decode指定的编码来将byte[ ]解析成字符串,例如:

String s_gbk = new String(b_gbk,"GBK");

String s_utf8 = new String(b_utf8,"UTF-8");

String s_iso88591 = new String(b_iso88591,"ISO8859-1");

s_gbk和s_utf8都是“中”,而只有s_iso88591是一个不认识 的字符,因为ISO8859-1编码的编码表中,根本就没有包含汉字字符,当然也就无法通过"中"getBytes("ISO8859-1")。

因此,通过StringgetBytes(String decode)方法来得到byte[ ]时,要确定decode的编码表中确实存在String表示的码值,这样得到的byte[ ]数组才能正确被还原。

扩展资料

java中文编码避免乱码

1、为了让中文字符适应某些特殊要求(如>

String s_iso88591 = new String("中"getBytes("UTF-8"),"ISO8859-1")

2、上述例子中的s_iso8859-1字符串实际是三个在 ISO8859-1中的字符,在将这些字符传递到目的地后,目的地程序再通过相反的方式:

String s_utf8 = new String(s_iso88591getBytes("ISO8859-1"),"UTF-8")

来得到正确的中文汉字。这样就既保证了遵守协 议规定、也支持中文。

3、StringgetBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示这里是encode ,not decode,从字符串到字节数组是编码的过程,从字节数组到字符串(即 new String(byte[] , charsetname))才是解码的过程。

参考资料:

百度百科-UTF-8

以上就是关于java中的编码问题。编码转换,编码大神进。全部的内容,包括:java中的编码问题。编码转换,编码大神进。、JAVA里的编码转换,懂的进来看看!!!!!、java中文乱码,能说下string.getBytes()和new String()转码是,具体点。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9734590.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存