如下所示:
package test.com.gjob.services; import java.util.Properties; public class Test { public static void main(String[] args) { String s = \"简介\"; String tt = gbEncoding(s); // String tt1 = \"你好,我想给你说一个事情\"; System.out.println(decodeUnicode(\"\\\\u7b80\\\\u4ecb\")); // System.out.println(decodeUnicode(tt1)); System.out.println(HTMLDecoder.decode(\"中国\")); String s1 = \"\\u7b80\\u4ecb\"; System.out.println(s.indexOf(\"\\\\\")); } public static String gbEncoding(final String gbString) { char[] utfBytes = gbString.toCharArray(); String unicodeBytes = \"\"; for (int byteIndex = 0; byteIndex < utfBytes.length; byteIndex++) { String hexB = Integer.toHexString(utfBytes[byteIndex]); if (hexB.length() <= 2) { hexB = \"00\" + hexB; } unicodeBytes = unicodeBytes + \"\\\\u\" + hexB; } System.out.println(\"unicodeBytes is: \" + unicodeBytes); return unicodeBytes; } public static String decodeUnicode(final String dataStr) { int start = 0; int end = 0; final StringBuffer buffer = new StringBuffer(); while (start > -1) { end = dataStr.indexOf(\"\\\\u\", start + 2); String charStr = \"\"; if (end == -1) { charStr = dataStr.substring(start + 2, dataStr.length()); } else { charStr = dataStr.substring(start + 2, end); } char letter = (char) Integer.parseInt(charStr, 16); // 16进制parse整形字符串。 buffer.append(new Character(letter).toString()); start = end; } return buffer.toString(); } }
public static String decodeUnicode(String theString) { char aChar; int len = theString.length(); StringBuffer outBuffer = new StringBuffer(len); for (int x = 0; x < len;) { aChar = theString.charAt(x++); if (aChar == \'\\\\\') { aChar = theString.charAt(x++); if (aChar == \'u\') { // Read the xxxx int value = 0; for (int i = 0; i < 4; i++) { aChar = theString.charAt(x++); switch (aChar) { case \'0\': case \'1\': case \'2\': case \'3\': case \'4\': case \'5\': case \'6\': case \'7\': case \'8\': case \'9\': value = (value << 4) + aChar - \'0\'; break; case \'a\': case \'b\': case \'c\': case \'d\': case \'e\': case \'f\': value = (value << 4) + 10 + aChar - \'a\'; break; case \'A\': case \'B\': case \'C\': case \'D\': case \'E\': case \'F\': value = (value << 4) + 10 + aChar - \'A\'; break; default: throw new IllegalArgumentException( \"Malformed \\\\uxxxx encoding.\"); } } outBuffer.append((char) value); } else { if (aChar == \'t\') aChar = \'\\t\'; else if (aChar == \'r\') aChar = \'\\r\'; else if (aChar == \'n\') aChar = \'\\n\'; else if (aChar == \'f\') aChar = \'\\f\'; outBuffer.append(aChar); } } else outBuffer.append(aChar); } return outBuffer.toString(); }
以上这篇java中unicode和中文相互转换的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持phpstudy。
本文地址:https://www.stayed.cn/item/8498
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我