我有一个类似这样的字符串
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");
我还尝试了另外一个库来进行文本转义,但是仍然没有成功。
UnicodeUnescaper.translate()
将把形式为“\u+\d\d\d\d”的转义Unicode值转换回Unicode。但是,您传递给translate()
的字符串(即“für”)不是这种形式。 - skomisaescapeHtml()
的 Javadoc 表明它会使用 HTML 实体转义字符串中的字符,并且这正是您的示例中发生的情况:“ü”已正确转义为“**ü**”。因此,您的问题与使用德语字符无关。如果可行的话,也许尝试将对escapeHtml()
的调用替换为对escapeJava()
的调用来解决您的问题? - skomisa