在mht文件中,可以看到汉字的编码变了,如“中国”变为“中国”这种其实 是unicode码的10进制表示,我们在java中一般看到的unicode码都是16进制的。主要写个10进制unicode和16进制unicode转换程序,以后可以参考一下,这个对于这次项目中查询数据并根据模板导出到word中,解决了几周来的乱码问题。
public
class
TestUnicode {
public static void main(String[] args) {
// 将中文转成16进制的表示
System.out.println( " /u " + Integer.toHexString( ' 中 ' )); //“/u4e2d”
System.out.println( " /u " + Integer.toHexString( ' 中 ' & 0xffff )); // “/u4e2d”
// 将中文转成10进制的表示
System.out.println( " &# " + ( int ) ' 中 ' + " ; " ); // 中
System.out.println( " &# " + ( ' 中 ' & 0xffff ) + " ; " ); // 中
// 将10/16进制的表示转成汉字
System.out.println(( char ) 20013 ); // 中
System.out.println(( char ) 0x4e2d ); // 中
}
}
public static void main(String[] args) {
// 将中文转成16进制的表示
System.out.println( " /u " + Integer.toHexString( ' 中 ' )); //“/u4e2d”
System.out.println( " /u " + Integer.toHexString( ' 中 ' & 0xffff )); // “/u4e2d”
// 将中文转成10进制的表示
System.out.println( " &# " + ( int ) ' 中 ' + " ; " ); // 中
System.out.println( " &# " + ( ' 中 ' & 0xffff ) + " ; " ); // 中
// 将10/16进制的表示转成汉字
System.out.println(( char ) 20013 ); // 中
System.out.println(( char ) 0x4e2d ); // 中
}
}