你还在用java.lang.String.getBytes()么?
最近用华为和亚信cmpp api,都发现一个问题:再把一个String转化一个byte[]的时候,居然没有指定编码方式!也就是说使用的是s.getBytes()方法!
这个方法是以系统的默认编码,来进行这个转换操作。而在不同的计算机上,这个值可能被设置为不同。比如,我的座机xp,默认编码就是gbk。而我的一个服务器,默认编码就是utf-8。为了确保你的程序更加可移植,你得认真考虑是否使用s.getBytes()。我建议你明确地指定编码方式进行转换。
有兴趣的朋友,可以用下面的代码试试。然后你更改你的windows的区域设置。再运行一下。
Copy code
package test;
class charset {
public static void main(String[] args) throws Exception {
String s = "汉字-123-abc";
printIT(s.getBytes());
printIT(s.getBytes("GBK"));
printIT(s.getBytes("ASCII"));
printIT(s.getBytes("UTF-8"));
printIT(s.getBytes("UnicodeBigUnmarked"));
}
static void printIT(byte[] theByte) {
for (byte b : theByte) {
System.out.print(b);
System.out.print(" ");
}
System.out.println();
}
}
http://blog.ccidnet.com/blog.php?do=showone&uid=14592&type=blog&itemid=52726
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: C++ 字符数组、字符串【输入、输出】
- 下一篇:没有了