Java中编码及转化相关问题

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: javaString都是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. 如果datasutf-8编码的:str = new String(datas,”utf-8”); 注意此时str中存放的是Unicode编码。

b. 如果datasansi编码的:str = new String(datas,”gbk”); 注意此时str中存放的是Unicode编码。

3. 关于@符号显示

例如:String str = “@1234”; 在部分手机中会出现显示不出@符号。

解决办法为:

str = String.valueOf(“/u00A9”) + “1234”;

1234g str = ".out.println(str.chat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值