将阿拉伯字符串转换为Unicode



我有一个这样的字符串:

"مرحبا هذا نص تجريبي"

而且,我想把它转换成这样的东西:

"u0623u0646u0627"

例如,您可以这样做:

String input = "مرحبا هذا نص تجريبي";
StringBuilder buf = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
char ch = input.charAt(i);
if (ch >= 32 && ch < 127)
buf.append(ch);
else
buf.append(String.format("\u%04x", (int) ch));
}
String result = buf.toString();
System.out.println(result);

输出

u0645u0631u062du0628u0627 u0647u0630u0627 u0646u0635 u062au062cu0631u064au0628u064a

可能是一个迂腐的脚注。在Java中,

"مرحباهندريبي">

Unicode。因为字符串在Java中是Unicode。你想要的东西通常被称为";"逃逸";字符串——用其他字符的序列表示字符。

来自@Andreas的答案对于如何做到这一点很好。

我在使用JavaMail时遇到了类似的问题,但它不需要转义字符。我所要做的就是添加一行代码:

MimeUtility.encodeText(fileName)

谢谢Andreas,它是有效的,对于我在SOAPUI下的案例,我创建了一个脚本,该脚本将此代码用作定义的函数,我可以在需要时调用它。

非常有用:

def convertToUnicode (inputString){
StringBuilder buf = new StringBuilder()
for (int i = 0; i < inputString.length(); i++) {
char ch = inputString.charAt(i)
if (ch >= 32 && ch < 127)
buf.append(ch)
else
buf.append(String.format("\u%04x", (int) ch));
}
String result = buf.toString()
return result
}

最新更新