怎样使用指定的字符集创造String对象
2016-03-06 20:12
204 查看
一般情况下,不论是创造字符串的字面量,还是使用String的构造方法创造字符串对象,JVM会自动的帮助开发者用平台默认的字符集进行构造。例如下面的代码:
String a="中文";
String b=new String("中文");
对于大多数中文系统来说,平台的默认字符集都是GBK或GB2312.当程序员用输入法 打印这些中文的时候,它的编码其实是按照”GBK“或”GB2312“进行的,但是在编译的时候,JVM会把这些字符编码按照Unicode进行重新编码,然后保存在class文件中。
如果一个字符数据不是来自于平台手动输入,而是通过其他的途径传入的,例如:Web请求参数,那么,这些字符编码就可能不是平台默认的,那么应该如何处理呢?这里就需要使用String带有字符编码的构造方法了:
String a="中文";
String b=new String(a.getBytes(),"GBK");
String c=new String(a.getBytes();"UTF-8");
以上代码的b和c字符串就是按照指定的字符集重新创建的字符串对象,如果a变量的"中文"两个字符是用GBK编码的话,那么c变量就会出现编码错误,打印出来一连串的问号。
带字符集的String的构造方法往往是解决字符乱码的一种手段。
使用带有字符集编码的String的构造方法就可以用指定的字符集来重新创造字符串对象,该方法的参数包括两个:一个是byte数组;另一个是字符集编码的字符串形式,如:utf-8、GBK、ISO-8859-1等
String a="中文";
String b=new String("中文");
对于大多数中文系统来说,平台的默认字符集都是GBK或GB2312.当程序员用输入法 打印这些中文的时候,它的编码其实是按照”GBK“或”GB2312“进行的,但是在编译的时候,JVM会把这些字符编码按照Unicode进行重新编码,然后保存在class文件中。
如果一个字符数据不是来自于平台手动输入,而是通过其他的途径传入的,例如:Web请求参数,那么,这些字符编码就可能不是平台默认的,那么应该如何处理呢?这里就需要使用String带有字符编码的构造方法了:
String a="中文";
String b=new String(a.getBytes(),"GBK");
String c=new String(a.getBytes();"UTF-8");
以上代码的b和c字符串就是按照指定的字符集重新创建的字符串对象,如果a变量的"中文"两个字符是用GBK编码的话,那么c变量就会出现编码错误,打印出来一连串的问号。
带字符集的String的构造方法往往是解决字符乱码的一种手段。
使用带有字符集编码的String的构造方法就可以用指定的字符集来重新创造字符串对象,该方法的参数包括两个:一个是byte数组;另一个是字符集编码的字符串形式,如:utf-8、GBK、ISO-8859-1等
相关文章推荐
- ZooKeeper 笔记(2) 监听数据变化
- 网页打不开,但是可以登录QQ,Win10
- 提高生产力的6个Visual Studio技巧
- MYSQL:ERROR 1148: The used command is not allowed with this MySQL version
- 第二天 XML SD卡 SharedPreferences
- bzoj2286 消耗战 虚树&树形dp
- Android学习笔记(一)
- eclipse配置maven
- 海量路由表能够使用HASH表存储吗-HASH查找和TRIE树查找
- 作业2 - 个人项目
- IT十八掌作业_java基础第二天_进制转换原理和补码存储方式
- HDU 1421 搬寝室 dp
- MD5解密与加密算法
- Android通讯录管理(获取联系人、通话记录、短信消息)(一)
- ZooKeeper 笔记(1) 安装部署及hello world
- 小结-Splay
- OSPF NSSA forwarding address 深度解析
- PAT (Advanced Level) Practice 1006
- C#—运算符、控制流程语句
- Android Volley完全解析(一),初识Volley的基本用法