如下所示:
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
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我