我有一个这样的字符串:
"مرحبا هذا نص تجريبي"
而且,我想把它转换成这样的东西:
"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
}