我有这样的字符串
String incoming = "<html> <head></head> <body> <p><span style=\"font-family: Arial;\">Ευχαριστώ (eff-kha-ri-STOE) Tι κανείς (tee-KAH-nis)? Mε συγχωρείτε.</span></p> </body></html>";
并且我正在使用StringEscapeUtils对其进行转义
import org.apache.commons.text.StringEscapeUtils;
String escaped = StringEscapeUtils.escapeJava(incoming);
结果是
<html> <head></head> <body> <p><span style=\"font-family: Arial;\">\u0395\u03C5\u03C7\u03B1\u03C1\u03B9\u03C3\u03C4\u03CE (eff-kha-ri-STOE) T\u03B9 \u03BA\u03B1\u03BD\u03B5\u03AF\u03C2 (tee-KAH-nis)? M\u03B5 \u03C3\u03C5\u03B3\u03C7\u03C9\u03C1\u03B5\u03AF\u03C4\u03B5.</span></p> </body></html>
我已经尝试通过获取字节将其转换为utf-8,但无法正常工作,有什么办法可以修复它?
这是我尝试过的:
String s = new String(escaped.getBytes(“ UTF-8”),“ UTF-8”);
我也尝试过使用其他库来转义文本,但这仍然行不通。
String
中的单引号,双引号和反斜杠等字符进行转义,但希望希腊字符保持不变。[不幸的是StringEscapeUtils.escapeJava()
会将具有Unicode值> 0x7f
的所有文本字符转换为它们的Unicode Escape等效项。例如,您的样本数据显示希腊字母tau(τ
)在\u03C4
返回的字符串中转义为StringEscapeUtils.escapeJava()
。我不知道为什么escapeJava()
这样做。 Its Javadoc指出“
使用Java字符串规则转义字符串中的字符。
”,但我找不到“ Java字符串规则