在做Java解析win,ole复合文件时遇到的问题。
其中一个块是unicode编码的文本,按常规的方式读取数据后打印出来的总是乱码。后来测试发现在似乎保存在文件中的数据的unicode编码被反转了。
如字符"补":
在文件中的十六进制是: 65 88
而实际的编码应该是: 88 65为什么会这样设计呢?
java中有没有专门提供给操作unicode数据流的类?在vc中转换ansi转换unicode用MultiByteToWideChar ,unicode转ansi用WideCharToMultiByte
java中有没有对应的方法或类?本质的问题还是ansi互转unicode!
其中一个块是unicode编码的文本,按常规的方式读取数据后打印出来的总是乱码。后来测试发现在似乎保存在文件中的数据的unicode编码被反转了。
如字符"补":
在文件中的十六进制是: 65 88
而实际的编码应该是: 88 65为什么会这样设计呢?
java中有没有专门提供给操作unicode数据流的类?在vc中转换ansi转换unicode用MultiByteToWideChar ,unicode转ansi用WideCharToMultiByte
java中有没有对应的方法或类?本质的问题还是ansi互转unicode!
解决方案 »
- 两个程序如何进行通讯?
- 希望高手急救=》Jgraph如何在edge上添加标签。
- 请教如何连接oracle数据库
- 请问哪里有struts中文帮助文档?谢谢
- 当一个引用变量被声明为final时,这意味着不能让这个变量指向某些其他的对象。但是,我们可以通过最终的引用变量访问一个变量,并改变他
- 一个关于格式的错误
- 请教一个问题
- ★★★菜鸟问题:我下载了j2sdk1.4.01.linux.i586.rpm.bin,怎么在我的RedHat8中安装呀,bin文件是个啥呀?(在线等待,弄了一下午了!)
- 关于java的socket问题,求教了!
- 求助,为什么覆写的paintComponent没调用?
- 写一个bat文件调用某一java类中的main方法
- j2me http通信 得到的是服务器页面代码
System.out.println(new String(xx,"ascii"));//gbk或其他。打印AX,不能转换成 补显然是不正确的~
如果文件中的十六进制和实际编码相反,那说明文件采用的是UTF-16LE编码格式(即Windows系统的默认Unicode编码格式)。楼主可以这么来做:
byte[] xx={65,88};//字符 ‘补’在文件中的编码
String s = new String(xx,"UTF-16LE");
System.out.println(s);
byte[] xx={(byte)0x65,(byte)0x88};
System.out.println(new String(xx,"UTF-16LE"));