我目前正在做读取基于GB2312编码方案的文本内码的事
我做了个程序,能够正确读取汉字机内码,但是读取某些少数民族语言的编码却读不出来,显示的是3F。
用UltraEdit可以正常读出,不知道为什么程序如下:
public class ChineseToCode {
public static void main(String[] args)throws Exception {
String str="";
byte[] b = str.getBytes("GB2312");
System.out.println(Integer.toHexString((b[0] & 0x000000ff) | 0xffffff00).substring(6).toUpperCase());
System.out.println(Integer.toHexString((b[1] & 0x000000ff) | 0xffffff00).substring(6).toUpperCase());
int[] quwei = new int[b.length / 2];
for(int i = 0, k = b.length / 2; i < k; i++){
quwei[i] = ((b[2 * i] & 0xff) * 100) + (b[2 * i + 1] & 0xff);
}
}
}
其中String字段等到需要再输入,输出直接是以16进制形式输出的
既然UltraEdit能读出,看来就是这个程序的问题,应该是有文本头???
望指点,如何修改程序
我做了个程序,能够正确读取汉字机内码,但是读取某些少数民族语言的编码却读不出来,显示的是3F。
用UltraEdit可以正常读出,不知道为什么程序如下:
public class ChineseToCode {
public static void main(String[] args)throws Exception {
String str="";
byte[] b = str.getBytes("GB2312");
System.out.println(Integer.toHexString((b[0] & 0x000000ff) | 0xffffff00).substring(6).toUpperCase());
System.out.println(Integer.toHexString((b[1] & 0x000000ff) | 0xffffff00).substring(6).toUpperCase());
int[] quwei = new int[b.length / 2];
for(int i = 0, k = b.length / 2; i < k; i++){
quwei[i] = ((b[2 * i] & 0xff) * 100) + (b[2 * i + 1] & 0xff);
}
}
}
其中String字段等到需要再输入,输出直接是以16进制形式输出的
既然UltraEdit能读出,看来就是这个程序的问题,应该是有文本头???
望指点,如何修改程序
我用Ultra Edit打开后另存为默认不可以,都是3F。Unicode也不可以
有的输入法输入的就可以,某些输入法输入的就不可以