您的位置:首页 > 编程语言 > Java开发

Java中编码及转化相关问题

2010-06-18 17:26 281 查看
Java中编码及转化相关问题

1. 在Java中,内存存放方式是以Unicode方式进行的,高位在前,与windows中相反。例如:
String str = "中";
for (int i=0; i<str.length(); i++) {
int nHigh = 0xff & (str.charAt(i) >> 8);
int nLow = 0xff & str.charAt(i);
System.out.println(Integer.toHexString(nHigh) + ", " + Integer.toHexString(nLow));

输出:4e 2d 这说明内存中存放的是Unicode,并且高位在前;而在windows上则发现为:2d 4e

2. 常见编码转换相关问题
StringToBytes: 在java中String都是Unicode,转换为bytes主要是高低位存放问题,如果bytes是在java中使用处理则高位在前,如果是在windows使用处理,则相反。
int nHigh = 0xff & (str.charAt(i) >> 8); //高位
int nLow = 0xff & str.charAt(i); //地位
在java中使用处理:
Bytes[i] = nHigh;
Bytes[i+1] = nLow;

反过来,bytesToString也是同样的道理。

但如果bytes中存放的是其他编码数据,可以采用如下方法:
a. 如果datas是utf-8编码的:str = new String(datas,”utf-8”); 注意此时str中存放的是Unicode编码。
b. 如果datas是ansi编码的:str = new String(datas,”gbk”); 注意此时str中存放的是Unicode编码。

3. 关于@符号显示
例如:String str = “@1234”; 在部分手机中会出现显示不出@符号。
解决办法为:
str = String.valueOf(“/u00A9”) + “1234”;
1234g str = ".out.println(str.chat
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: