好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

java字符串的各种编码转换.docx

7页
  • 卖家[上传人]:第***
  • 文档编号:30976033
  • 上传时间:2018-02-03
  • 文档格式:DOCX
  • 文档大小:13.10KB
  • / 7 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • java 字符串的各种编码转换 import java.io.UnsupportedEncodingException;/*** 转换字符串的编码*/public class ChangeCharset {/** 7 位 ASCII 字符,也叫作 ISO646-US、Unicode 字符集的基本拉丁块 */public static final String US_ASCII = "US-ASCII";/** ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1 */public static final String ISO_8859_1 = "ISO-8859-1";/** 8 位 UCS 转换格式 */public static final String UTF_8 = "UTF-8";/** 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 */public static final String UTF_16BE = "UTF-16BE";/** 16 位 UCS 转换格式,Little-endian(最高地址存放低位字节)字节顺序 */public static final String UTF_16LE = "UTF-16LE";/** 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 */public static final String UTF_16 = "UTF-16"; /** 中文超大字符集 */public static final String GBK = "GBK";/*** 将字符编码转换成 US-ASCII 码*/public String toASCII(String str) throws UnsupportedEncodingException{return this.changeCharset(str, US_ASCII);}/*** 将字符编码转换成 ISO-8859-1 码*/public String toISO_8859_1(String str) throws UnsupportedEncodingException{return this.changeCharset(str, ISO_8859_1);}/*** 将字符编码转换成 UTF-8 码*/public String toUTF_8(String str) throws UnsupportedEncodingException{return this.changeCharset(str, UTF_8);}/*** 将字符编码转换成 UTF-16BE 码*/public String toUTF_16BE(String str) throws UnsupportedEncodingException{ return this.changeCharset(str, UTF_16BE);}/*** 将字符编码转换成 UTF-16LE 码*/public String toUTF_16LE(String str) throws UnsupportedEncodingException{return this.changeCharset(str, UTF_16LE);}/*** 将字符编码转换成 UTF-16 码*/public String toUTF_16(String str) throws UnsupportedEncodingException{return this.changeCharset(str, UTF_16);}/*** 将字符编码转换成 GBK 码*/public String toGBK(String str) throws UnsupportedEncodingException{return this.changeCharset(str, GBK);}/*** 字符串编码转换的实现方法* @param str 待转换编码的字符串* @param newCharset 目标编码 * @return* @throws UnsupportedEncodingException*/public String changeCharset(String str, String newCharset)throws UnsupportedEncodingException {if (str != null) {//用默认字符编码解码字符串。

      byte[] bs = str.getBytes();//用新的字符编码生成字符串return new String(bs, newCharset);}return null;}/*** 字符串编码转换的实现方法* @param str 待转换编码的字符串* @param oldCharset 原编码* @param newCharset 目标编码* @return* @throws UnsupportedEncodingException*/public String changeCharset(String str, String oldCharset, String newCharset)throws UnsupportedEncodingException {if (str != null) {//用旧的字符编码解码字符串解码可能会出现异常 byte[] bs = str.getBytes(oldCharset);//用新的字符编码生成字符串return new String(bs, newCharset);}return null;}public static void main(String[] args) throws UnsupportedEncodingException {ChangeCharset test = new ChangeCharset();String str = "This is a 中文的 String!";System.out.println("str: " + str);String gbk = test.toGBK(str);System.out.println("转换成 GBK 码: " + gbk);System.out.println();String ascii = test.toASCII(str);System.out.println("转换成 US-ASCII 码: " + ascii);gbk = test.changeCharset(ascii,ChangeCharset.US_ASCII, ChangeCharset.GBK);System.out.println("再把 ASCII 码的字符串转换成 GBK 码: " + gbk);System.out.println();String iso88591 = test.toISO_8859_1(str);System.out.println("转换成 ISO-8859-1 码: " + iso88591);gbk = test.changeCharset(iso88591,ChangeCharset.ISO_8859_1, ChangeCharset.GBK);System.out.println("再把 ISO-8859-1 码的字符串转换成 GBK 码: " + gbk);System.out.println();String utf8 = test.toUTF_8(str); System.out.println("转换成 UTF-8 码: " + utf8);gbk = test.changeCharset(utf8,ChangeCharset.UTF_8, ChangeCharset.GBK);System.out.println("再把 UTF-8 码的字符串转换成 GBK 码: " + gbk);System.out.println();String utf16be = test.toUTF_16BE(str);System.out.println("转换成 UTF-16BE 码:" + utf16be);gbk = test.changeCharset(utf16be,ChangeCharset.UTF_16BE, ChangeCharset.GBK);System.out.println("再把 UTF-16BE 码的字符串转换成 GBK 码: " + gbk);System.out.println();String utf16le = test.toUTF_16LE(str);System.out.println("转换成 UTF-16LE 码:" + utf16le);gbk = test.changeCharset(utf16le,ChangeCharset.UTF_16LE, ChangeCharset.GBK);System.out.println("再把 UTF-16LE 码的字符串转换成 GBK 码: " + gbk);System.out.println();String utf16 = test.toUTF_16(str);System.out.println("转换成 UTF-16 码:" + utf16);gbk = test.changeCharset(utf16,ChangeCharset.UTF_16LE, ChangeCharset.GBK);System.out.println("再把 UTF-16 码的字符串转换成 GBK 码: " + gbk);String s = new String("中文".getBytes("UTF-8"),"UTF-8");System.out.println(s);}}------------------------------------------------------------------------------------------------------------------ java 中的 String 类是按照 unicode 进行编码的,当使用 String(byte[] bytes, String encoding)构造字符串时,encoding 所指的是 bytes 中的数据是按照那种方式编码的,而不是最后产生的 String 是什么编码方式,换句话说,是让系统把 bytes 中的数据由 encoding编码方式转换成 unicode 编码。

      如果不指明, bytes 的编码方式将由 jdk 根据操作系统决定当我们从文件中读数据时,最好使用 InputStream 方式,然后采用 String(byte[] bytes, String encoding)指明文件的编码方式不要使用 Reader 方式,因为 Reader 方式会自动根据 jdk 指明的编码方式把文件内容转换成 unicode 编码当我们从数据库中读文本数据时,采用 ResultSet.getBytes()方法取得字节数组,同样采用带编码方式的字符串构造方法即可ResultSet rs;bytep[] bytes = rs.getBytes();String str = new String(bytes, "gb2312");不要采取下面的步骤ResultSet rs;String str = rs.getString();str = new String(str.getBytes("iso8859-1"), "gb2312");这种编码转换方式效率底之所以这么做的原因是,ResultSet 在 getString()方法执行时,默认数据库里的数据编码方式为 iso8859-1。

      系统会把数据依照 iso8859-。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.