我正在尝试转义日语xml以显示为普通的日语字符串而不是unicode xml。我无法使用apache.commons.lang3
,并且仅首选apache.commons.lang
。如果您在本库中没有其他建议,请随时分享。预先感谢!
final String xmlToEscape = "言語が良くない";
final String escapedXml = StringEscapeUtils.escapeXml(xmlToEscape);
打印:
言語が良くない
应打印:
言语が良くない
答案 0 :(得分:0)
StringEscapeUtils.escapeXml()
在 apache.commons.lang
always escapes non-ASCII characters 中。
如果您不想转义日文字符,则只需将字符串中的 ASCII 字符传递给 StringEscapeUtils.escapeXml()
,如下所示:
package org.example;
import java.util.Arrays;
import org.apache.commons.lang.StringEscapeUtils;
public class Test {
public static void main(String[] args) {
// You will get "言語が良くない <ABC>"
System.out.println(StringEscapeUtils.escapeXml("言語が良くない <ABC>"));
// You will get "言語が良くない <ABC>"
System.out.println(escapeXml("言語が良くない <ABC>"));
}
public static String escapeXml(String str) {
return Arrays.stream(str.split("")).map(s -> escapeCharacter(s)).collect(StringBuilder::new, StringBuilder::append, StringBuilder::append).toString();
}
public static String escapeCharacter(String str) {
if (str.matches("\\p{ASCII}")) {
return StringEscapeUtils.escapeXml(str);
} else {
return str;
}
}
}