结果中文字符全部变成?(ascii编码为63).
原因是iso-8859-1把“每个2Byte的Unicode字符”看成一个字符,中文无法识别。
为什么有人要这么用?
原因是iso-8859-1把“每个2Byte的Unicode字符”看成一个字符,中文无法识别。
为什么有人要这么用?
解决方案 »
- 传智播客5月11日补发:张孝祥struts视频之validator框架单元
- 怎样用java把excel中的数据导入到Sqlserver中
- 子类继承的方法,为什么输出的却是父类的成员变量?
- 各位高手帮帮忙啊!!!!!
- 面試題,你會嗎?
- 傻瓜问题:Java中执行查询时,结果集是已取至本地还是暂存在数据库服务器上?
- 为什么看不到显示的字符?
- 关于javah 的问题
- 请问怎么使JTextArea或JEditorPane在显示的视图内自动换行?
- 编译javac HelloWorld.java通过后生成class文件,但运行时总出现noclass错误!
- 如何实现网页模拟操作??
- 怎样用调用Process类打开IE窗口时控制数量?
这样有不会有信息丢失吗?
String s ="h中";
byte[] b = s.getBytes("ISO-8859-1");
System.out.println("ISO-8859-1: "+Arrays.toString(b))
System.out.println(new String(b));
输出:
[104, 63]
因为一个16Byte的unicode字符 转换后,成为一个8Byte的iso-889-1字符。iso8859-1无法识别中文,故成?.
byte[] b = s.getBytes("ISO-8859-1");
System.out.println("ISO-8859-1: "+Arrays.toString(b));
输出:
ISO-8859-1: [104, 63]
一个2Byte的Unicode字符,变成了一个8byte的iso8859-1字符。
is08859-1无法识别中文,故变成‘?’
这就丢失了中文信息。
byte[] b=s.getBytes("ISO-8859-1"),"GBK");
System.out.println("GBK: "+Arrays.toString(b));这样再试试
new String(s.getBytes("iso-8859-1","GBK") ,前提是s已经是乱码了,而且是gbk的乱码,要把它转回来