我有这个弦

String x="String containning special chars  \u202C \n  \u202C  \u202C  \u202C";

我如何打印出来:String containning special chars \u202C \n \u202C \u202C \u202C

试过了
System.out.println(x.replace("\\","\\\\"));

但这只打印String containning special chars ‬ \n ‬ ‬ ‬
也试过了
String out = org.apache.commons.lang3.StringEscapeUtils.unescapeJava(x);
System.out.println(out);

但这也无济于事。

有人提出我不知道的建议或API吗?

更新-解决方案

在@lbear方法之后,我想到了处理大多数转义字符串的这种函数
public static String removeUnicodeAndEscapeChars(String input) {
    StringBuilder buffer = new StringBuilder(input.length());
    for (int i = 0; i < input.length(); i++) {
        if ((int) input.charAt(i) > 256) {
            buffer.append("\\u").append(Integer.toHexString((int) input.charAt(i)));
        } else {
            if (input.charAt(i) == '\n') {
                buffer.append("\\n");
            } else if(input.charAt(i) == '\t'){
                buffer.append("\\t");
            }else if(input.charAt(i) == '\r'){
                buffer.append("\\r");
            }else if(input.charAt(i) == '\b'){
                buffer.append("\\b");
            }else if(input.charAt(i) == '\f'){
                buffer.append("\\f");
            }else if(input.charAt(i) == '\''){
                buffer.append("\\'");
            }else if(input.charAt(i) == '\"'){
                buffer.append("\\");
            }else if(input.charAt(i) == '\\'){
                buffer.append("\\\\");
            }else {
                buffer.append(input.charAt(i));
            }
        }
    }
    return buffer.toString();
}

最佳答案

使用Integer.toHexString((int)x.charAt(34));,您可以获得unicode char的字符串,并在其前面添加\\u,您将获得String

public static String removeUnicode(String input){
    StringBuffer buffer = new StringBuffer(input.length());
    for (int i =0; i < input.length(); i++){
        if ((int)input.charAt(i) > 256){
        buffer.append("\\u").append(Integer.toHexString((int)input.charAt(i)));
        } else {
            if ( input.charAt(i) == '\n'){
                buffer.append("\\n");
            } else {
                buffer.append(input.charAt(i));
            }
        }
    }
    return buffer.toString();
}

10-05 22:18