java中unicode和中文相互转换

平时开发中,经常遇到中文转换成中文转换成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. }
时间: 2024-10-14 08:47:44

java中unicode和中文相互转换的相关文章

java 中 image 和 byte[] 相互转换

java 中 image 和 byte[] 相互转换可恶的…………其实也挺好的 只是把好不容易写出来的东西记下来,怕忘了…… 下面,我来介绍一个简单的 byte[] to image, 我们只需要一个存储了图片信息的二进制串(byte[]) 然后,这样: InputStream buffin = new ByteArrayInputStream(/*二进制串*/,                                               /*起始位置*/,           

java中IO及中文乱码问题

第一次发这种博客,所以一直在纠结怎么开头,干脆直奔主题吧,把自己的一些总结体会记录下来,先从简单的学习开始,希望可以慢慢坚持,以后的内容可以写的更好更有意义. 其实真正在工作中中文乱码的问题遇到的不多,那是因为公司为了开发方便所以文件都统一编码了.但是我觉得还有很有必要去稍微了解一下其原理的. IO就是输入输出流,用面向对象来理解的话,就是输入,输出流对象,主要用来操作文件对象.所以再稍微谈谈文件的概念,即File对象.在Java中,File不是我们平时生活中指的某个具体文件,而是某个路径对象,

关于JAVA中URL传递中文参数的问题

今天在调用一个接口时,需要传递一个中文参数,结果获取不到数据,原因就在于中文传参的编码问题. 问题来源:URL url= new URL("http://XXX?OrganName=司法厅"); 现解决办法如下: 1.对要进行URL传递的中文字符进行编码: String message = Java.NET.URLEncoder.encode("司法厅","utf-8"); 2.在取URL传递中文的页面对字符进行解码: String msg =

关于JAVA中URL传递中文参数,取值是乱码的解决办法

前几天看到有网友在问URLDecoder和URLEncoder方面的使用问题,突然想起,原来我刚遇到这两个类时,也觉得很神密,由此可以想想初学者的心情,于是便有了今天的这篇文章. 其实,这两个类的使用并不复杂,URLDecoder和URLEncoder它的作用主要是用于普通字符串和application/x-www-form-rulencodedMIME字符串之间的转换,一般的人会以为后一个字符串比较专业,以为有什么高深的知识,其实不然. 下面,我们在在"百度"中搜索"网络时空",会看到如下所示

java中int与byte相互转换

1:int和byte的关系 在java中,int整形变量是32位的,而byte是8位的,他们之间的转换有一定的策略和讲究. 1.1:int 到byte 首先我们实现int和byte之间的转换,思路如下: 创建一个byte数组,长度为4.byte[0]是最高位,byte[1]是次高位,byte[2]是次次高位,byte[3]是最低位, 在将int数据右移24位,然后与0xFF相与即可得到byte[0]. 在将int数据右移16位,然后与0xFF相与即可得到byte[1]. 在将int数据右移8位,

Java中unicode增补字符(辅助平面)相关用法简介

前言 Java从1.5版本开始,加入了unicode辅助平面的支持.本文在JDK1.6上测试. 相关的API主要在Character和String类里.以下这段话是Character的文档说明摘抄. ================================================================================================== Character 类在对象中包装一个基本类型 char 的值.Character 类型的对象包含类型

java中数组与List相互转换的方法

1.List转换成为数组.(这里的List是实体是ArrayList) 调用ArrayList的toArray方法. toArray public <T> T[] toArray(T[] a)返回一个按照正确的顺序包含此列表中所有元素的数组:返回数组的运行时类型就是指定数组的运行时类型.如果列表能放入指定的数组,则返回放入此列表元素的数组.否则,将根据指定数组的运行时类型和此列表的大小分配一个新的数组. 如果指定的数组能容纳列表并有剩余空间(即数组的元素比列表的多),那么会将数组中紧跟在集合末

Java中Servlet输出中文乱码问题

1.现象:字节流向浏览器输出中文,可能会乱码(IE低版本) private void byteMethod(HttpServletResponse response) throws IOException, UnsupportedEncodingException { String date = "你好"; ServletOutputStream outputStream = response.getOutputStream(); outputStream.write(date.get

Delphi中Unicode转中文

function UnicodeToChinese(inputstr: string): string;var i: Integer; index: Integer; temp, top, last: string;begin index := 1; while index >= 0 do begin index := Pos('\u', inputstr) - 1; if index < 0 then begin last := inputstr; Result := Result + la