分享万能java字符串编码转换工具类

朴灿烈づ我的快乐病毒、 2022-04-12 20:31 560阅读 0赞

代码下载地址:http://www.zuidaima.com/share/1795356301560832.htm

原文:分享万能java字符串编码转换工具类

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

输出结果:

分享万能java字符串编码转换工具类

另外关于java字符编码可以参考这个帖子:Java编码浅析(注意区分三个概念)

发表评论

表情:
评论列表 (有 0 条评论,560人围观)

还没有评论,来说两句吧...

相关阅读