怎样使用指定的字符集创造String对象

来源:互联网 发布:mac os 10.11系统镜像 编辑:程序博客网 时间:2024/05/25 16:39

一般情况下,不论是创造字符串的字面量,还是使用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等

0 0