当前位置:  开发笔记 > 编程语言 > 正文

Java charset和Windows

如何解决《Javacharset和Windows》经验,为你挑选了1个好方法。

我有一个Java程序在外部进程中运行msinfo32.exe(系统信息),然后读取msinfo32.exe生成的文件内容.当Java程序将文件内容加载到String中时,String字符是不可读的.要使String可读,我必须使用String(byte [] bytes,String charsetName)创建String,并将charsetName设置为UTF-16.但是,当在Windows2003的一个实例上运行时,只有UTF-16LE(小端)会产生可打印的字符串.

我怎样才能提前知道要使用哪种字符编码?

此外,任何有关该主题的背景信息将不胜感激.



1> McDowell..:

某些Microsoft应用程序使用字节顺序标记来指示Unicode文件及其字节顺序.我可以在我的Windows XP机器上看到导出的.NFO文件以0xFFFE开头,所以它是little-endian.

FF FE 3C 00 3F 00 78 00 6D 00 6C 00 20 00 76 00         __<_?_x_m_l_ _v_
65 00 72 00 73 00 69 00 6F 00 6E 00 3D 00 22 00         e_r_s_i_o_n_=_"_
31 00 2E 00 30 00 22 00 3F 00 3E 00 0D 00 0A 00         1_._0_"_?_>_____
3C 00 4D 00 73 00 49 00 6E 00 66 00 6F 00 3E 00         <_M_s_I_n_f_o_>_
0D 00 0A 00 3C 00 4D 00 65 00 74 00 61 00 64 00         ____<_M_e_t_a_d_

另外,我建议您切换到使用Reader实现而不是String构造函数来解码文件; 这有助于避免读取半个字符的问题,因为它被截断,因为它位于字节数组的末尾.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有