StringEscapeUtils以Unicode显示日语

时间:2019-01-24 11:44:37

标签: java apache stringescapeutils

我正在尝试转义日语xml以显示为普通的日语字符串而不是unicode xml。我无法使用apache.commons.lang3,并且仅首选apache.commons.lang。如果您在本库中没有其他建议,请随时分享。预先感谢!

final String xmlToEscape = "言語が良くない"; final String escapedXml = StringEscapeUtils.escapeXml(xmlToEscape);

打印:

  

言語が良くない

应打印:

  

言语が良くない

1 个答案:

答案 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 "言語が良くない &lt;ABC&gt;"
        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;
        }
    }
}