java中unicode和中文相互转换的简单实现

网友投稿 271 2023-07-08


java中unicode和中文相互转换的简单实现

如下所示:

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 http://'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'; XHFzrbj

outBuffer.append(aChar);

}

} else

outBuffer.append(aChar);

}

return outBuffer.toString();

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java用户登录验证代码
下一篇:Java集合Iterator迭代的实现方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~