Java实现Unicode码转为中文

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-31 21:38   16   0

java里如何把\u8BA8\u8BBA\u533A这种编码转换成中文

package com.util.prop; public class Unicode2CN { /** * @Author:HaoMing(郝明) * @Project_name:checkface * @Full_path:com.util.prop.Unicode2CN.java * @Date:@2014 2014-8-27 下午4:10:38 * @Return_type:void * @Desc : */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(convert("\\u8BA8\\u8BBA\\u533A")); // System.out.println(convert("V\\u5927\\u53D1\\u9001\\u6CD5\\u89C4")); } public static String convert(String utfString){ StringBuilder sb = new StringBuilder(); int i = -1; int pos = 0; while((i=utfString.indexOf("\\u", pos)) != -1){ sb.append(utfString.substring(pos, i)); if(i+5 < utfString.length()){ pos = i+6; sb.append((char)Integer.parseInt(utfString.substring(i+2, i+6), 16)); } } return sb.toString(); } } 平时开发中,经常遇到中文转换成中文转换成Unicode编码和Unicode编码转换成中文的问题,国际化的时候,也要遇到这个问题,

现在我就把中网上找的很自己学习的经验,共享给大家了。闲话少说,步入正题,

Java代码如下:

[java] view plain copy
  1. package test.com.gjob.services;
  2. import java.util.Properties;
  3. public class Test {
  4. public static void main(String[] args) {
  5. String s = "简介";
  6. String tt = gbEncoding(s);
  7. // String tt1 = "你好,我想给你说一个事情";
  8. System.out.println(decodeUnicode("\\u7b80\\u4ecb"));
  9. // System.out.println(decodeUnicode(tt1));
  10. System.out.println(HTMLDecoder.decode("中国"));
  11. String s1 = "\u7b80\u4ecb";
  12. System.out.println(s.indexOf("\\"));
  13. }
  14. public static String gbEncoding(final String gbString) {
  15. char[] utfBytes = gbString.toCharArray();
  16. String unicodeBytes = "";
  17. for (int byteIndex = 0; byteIndex < utfBytes.length; byteIndex++) {
  18. String hexB = Integer.toHexString(utfBytes[byteIndex]);
  19. if (hexB.length() <= 2) {
  20. hexB = "00" + hexB;
  21. }
  22. unicodeBytes = unicodeBytes + "\\u" + hexB;
  23. }
  24. System.out.println("unicodeBytes is: " + unicodeBytes);
  25. return unicodeBytes;
  26. }
  27. public static String decodeUnicode(final String dataStr) {
  28. int start = 0;
  29. int end = 0;
  30. final StringBuffer buffer = new StringBuffer();
  31. while (start > -1) {
  32. end = dataStr.indexOf("\\u", start + 2);
  33. String charStr = "";
  34. if (end == -1) {
  35. charStr = dataStr.substring(start + 2, dataStr.length());
  36. } else {
  37. charStr = dataStr.substring(start + 2, end);
  38. }
  39. char letter = (char) Integer.parseInt(charStr, 16); // 16进制parse整形字符串。
  40. buffer.append(new Character(letter).toString());
  41. start = end;
  42. }
  43. return buffer.toString();
  44. }
  45. }

unicode转换成中文

[java] view plain copy
  1. public static String decodeUnicode(String theString) {
  2. char aChar;
  3. int len = theString.length();
  4. StringBuffer outBuffer = new StringBuffer(len);
  5. for (int x = 0; x < len;) {
  6. aChar = theString.charAt(x++);
  7. if (aChar == '\\') {
  8. aChar = theString.charAt(x++);
  9. if (aChar == 'u') {
  10. // Read the xxxx
  11. int value = 0;
  12. for (int i = 0; i < 4; i++) {
  13. aChar = theString.charAt(x++);
  14. switch (aChar) {
  15. case '0':
  16. case '1':
  17. case '2':
  18. case '3':
  19. case '4':
  20. case '5':
  21. case '6':
  22. case '7':
  23. case '8':
  24. case '9':
  25. value = (value << 4) + aChar - '0';
  26. break;
  27. case 'a':
  28. case 'b':
  29. case 'c':
  30. case 'd':
  31. case 'e':
  32. case 'f':
  33. value = (value << 4) + 10 + aChar - 'a';
  34. break;
  35. case 'A':
  36. case 'B':
  37. case 'C':
  38. case 'D':
  39. case 'E':
  40. case 'F':
  41. value = (value << 4) + 10 + aChar - 'A';
  42. break;
  43. default:
  44. throw new IllegalArgumentException(
  45. "Malformed \\uxxxx encoding.");
  46. }
  47. }
  48. outBuffer.append((char) value);
  49. } else {
  50. if (aChar == 't')
  51. aChar = '\t';
  52. else if (aChar == 'r')
  53. aChar = '\r';
  54. else if (aChar == 'n')
  55. aChar = '\n';
  56. else if (aChar == 'f')
  57. aChar = '\f';
  58. outBuffer.append(aChar);
  59. }
  60. } else
  61. outBuffer.append(aChar);
  62. }
  63. return outBuffer.toString();
  64. }
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP