[Java] 转换字符串的编码 各种编码的转换 →→→→→进入此内容的聊天室

来自 , 2020-04-10, 写在 Java, 查看 132 次.
URL http://www.code666.cn/view/f76a89f0
  1. import java.io.UnsupportedEncodingException;
  2.  
  3. /**
  4.  * 转换字符串的编码
  5.  */
  6. public class ChangeCharset {
  7.         /** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
  8.         public static final String US_ASCII = "US-ASCII";
  9.  
  10.         /** ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1 */
  11.         public static final String ISO_8859_1 = "ISO-8859-1";
  12.  
  13.         /** 8 位 UCS 转换格式 */
  14.         public static final String UTF_8 = "UTF-8";
  15.  
  16.         /** 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 */
  17.         public static final String UTF_16BE = "UTF-16BE";
  18.  
  19.         /** 16 位 UCS 转换格式,Little-endian(最高地址存放低位字节)字节顺序 */
  20.         public static final String UTF_16LE = "UTF-16LE";
  21.  
  22.         /** 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 */
  23.         public static final String UTF_16 = "UTF-16";
  24.  
  25.         /** 中文超大字符集 */
  26.         public static final String GBK = "GBK";
  27.  
  28.         /**
  29.          * 将字符编码转换成US-ASCII码
  30.          */
  31.         public String toASCII(String str) throws UnsupportedEncodingException {
  32.                 return this.changeCharset(str, US_ASCII);
  33.         }
  34.  
  35.         /**
  36.          * 将字符编码转换成ISO-8859-1码
  37.          */
  38.         public String toISO_8859_1(String str) throws UnsupportedEncodingException {
  39.                 return this.changeCharset(str, ISO_8859_1);
  40.         }
  41.  
  42.         /**
  43.          * 将字符编码转换成UTF-8码
  44.          */
  45.         public String toUTF_8(String str) throws UnsupportedEncodingException {
  46.                 return this.changeCharset(str, UTF_8);
  47.         }
  48.  
  49.         /**
  50.          * 将字符编码转换成UTF-16BE码
  51.          */
  52.         public String toUTF_16BE(String str) throws UnsupportedEncodingException {
  53.                 return this.changeCharset(str, UTF_16BE);
  54.         }
  55.  
  56.         /**
  57.          * 将字符编码转换成UTF-16LE码
  58.          */
  59.         public String toUTF_16LE(String str) throws UnsupportedEncodingException {
  60.                 return this.changeCharset(str, UTF_16LE);
  61.         }
  62.  
  63.         /**
  64.          * 将字符编码转换成UTF-16码
  65.          */
  66.         public String toUTF_16(String str) throws UnsupportedEncodingException {
  67.                 return this.changeCharset(str, UTF_16);
  68.         }
  69.  
  70.         /**
  71.          * 将字符编码转换成GBK码
  72.          */
  73.         public String toGBK(String str) throws UnsupportedEncodingException {
  74.                 return this.changeCharset(str, GBK);
  75.         }
  76.  
  77.         /**
  78.          * 字符串编码转换的实现方法
  79.          *
  80.          * @param str
  81.          *            待转换编码的字符串
  82.          * @param newCharset
  83.          *            目标编码
  84.          * @return
  85.          * @throws UnsupportedEncodingException
  86.          */
  87.         public String changeCharset(String str, String newCharset)
  88.                         throws UnsupportedEncodingException {
  89.                 if (str != null) {
  90.                         // 用默认字符编码解码字符串。
  91.                         byte[] bs = str.getBytes();
  92.                         // 用新的字符编码生成字符串
  93.                         return new String(bs, newCharset);
  94.                 }
  95.                 return null;
  96.         }
  97.  
  98.         /**
  99.          * 字符串编码转换的实现方法
  100.          *
  101.          * @param str
  102.          *            待转换编码的字符串
  103.          * @param oldCharset
  104.          *            原编码
  105.          * @param newCharset
  106.          *            目标编码
  107.          * @return
  108.          * @throws UnsupportedEncodingException
  109.          */
  110.         public String changeCharset(String str, String oldCharset, String newCharset)
  111.                         throws UnsupportedEncodingException {
  112.                 if (str != null) {
  113.                         // 用旧的字符编码解码字符串。解码可能会出现异常。
  114.                         byte[] bs = str.getBytes(oldCharset);
  115.                         // 用新的字符编码生成字符串
  116.                         return new String(bs, newCharset);
  117.                 }
  118.                 return null;
  119.         }
  120.  
  121.         public static void main(String[] args) throws UnsupportedEncodingException {
  122.                 ChangeCharset test = new ChangeCharset();
  123.                 String str = "This is a 中文的 String!";
  124.                 System.out.println("str: " + str);
  125.                 String gbk = test.toGBK(str);
  126.                 System.out.println("转换成GBK码: " + gbk);
  127.                 System.out.println();
  128.                 String ascii = test.toASCII(str);
  129.                 System.out.println("转换成US-ASCII码: " + ascii);
  130.                 gbk = test.changeCharset(ascii, ChangeCharset.US_ASCII,
  131.                                 ChangeCharset.GBK);
  132.                 System.out.println("再把ASCII码的字符串转换成GBK码: " + gbk);
  133.                 System.out.println();
  134.                 String iso88591 = test.toISO_8859_1(str);
  135.                 System.out.println("转换成ISO-8859-1码: " + iso88591);
  136.                 gbk = test.changeCharset(iso88591, ChangeCharset.ISO_8859_1,
  137.                                 ChangeCharset.GBK);
  138.                 System.out.println("再把ISO-8859-1码的字符串转换成GBK码: " + gbk);
  139.                 System.out.println();
  140.                 String utf8 = test.toUTF_8(str);
  141.                 System.out.println("转换成UTF-8码: " + utf8);
  142.                 gbk = test.changeCharset(utf8, ChangeCharset.UTF_8, ChangeCharset.GBK);
  143.                 System.out.println("再把UTF-8码的字符串转换成GBK码: " + gbk);
  144.                 System.out.println();
  145.                 String utf16be = test.toUTF_16BE(str);
  146.                 System.out.println("转换成UTF-16BE码:" + utf16be);
  147.                 gbk = test.changeCharset(utf16be, ChangeCharset.UTF_16BE,
  148.                                 ChangeCharset.GBK);
  149.                 System.out.println("再把UTF-16BE码的字符串转换成GBK码: " + gbk);
  150.                 System.out.println();
  151.                 String utf16le = test.toUTF_16LE(str);
  152.                 System.out.println("转换成UTF-16LE码:" + utf16le);
  153.                 gbk = test.changeCharset(utf16le, ChangeCharset.UTF_16LE,
  154.                                 ChangeCharset.GBK);
  155.                 System.out.println("再把UTF-16LE码的字符串转换成GBK码: " + gbk);
  156.                 System.out.println();
  157.                 String utf16 = test.toUTF_16(str);
  158.                 System.out.println("转换成UTF-16码:" + utf16);
  159.                 gbk = test.changeCharset(utf16, ChangeCharset.UTF_16LE,
  160.                                 ChangeCharset.GBK);
  161.                 System.out.println("再把UTF-16码的字符串转换成GBK码: " + gbk);
  162.                 String s = new String("中文".getBytes("UTF-8"), "UTF-8");
  163.                 System.out.println(s);
  164.         }
  165. }
  166.  

回复 "转换字符串的编码 各种编码的转换"

这儿你可以回复上面这条便签

captcha