我有一个包含"\u0627\u0644\u0628\u062d\u0631\u0649\u0646"
的字符串。
我想转换为包含"البحرىن"
的字符串。
我尝试过使用这种方法,但它不能达到我希望的效果:
protected String convertUtf(String input) throws CharacterCodingException {
Charset charset = Charset.forName("UTF-8");
CharsetDecoder decoder = charset.newDecoder();
CharsetEncoder encoder = charset.newEncoder();
ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(input));
CharBuffer cbuf = decoder.decode(bbuf);
return cbuf.toString();
}
思想?
答案 0 :(得分:3)
它是一回事。这两种形式是可以互换的。它只是在java代码中表示字符串的一种不同方式。 String
对象是相同的。例如:
String s1 = "\u0627\u0644\u0628\u062d\u0631\u0649\u0646";
String s2 = "البحرىن";
System.out.println(s1.equals(s2)); //prints "true"
答案 1 :(得分:2)
要转换包含文字代码点的字符串(例如String s = "\\u0627[...]"
),请参阅this question。
答案 2 :(得分:1)
如果您有 literal 字符串“\ u0627 \ u0644 \ u0628 \ u0628 \ u0629 \ u0649 \ u0646”并想将其转换为正确的Unicode字符串,那么您必须进行解析/手工转换。您可以在String java.util.Properties#loadConvert (char[] in, int off, int len, char[] convtBuf)
中找到相应的方法。因为它是private
你不能从外面使用它,但必须复制它。