将java字符串中的unicode转换为unicode的字符串表示形式

时间:2018-09-27 20:21:52

标签: java encoding utf-8

我有一个这样的字符串

  

温度:38.6°C(98.6°F)

最终希望将其转换为以下外观

  

98.6 \ u00b0F(37.0 \ u00b0C)

我想出了所有使这成为解决方案的解决方案吗?或其他一些字符,我想做的是在其中放置一个unicode解决方案的字符串。

我遇到或尝试过的所有解决方案似乎都不起作用。

先谢谢了。

1 个答案:

答案 0 :(得分:2)

只需遍历字符串的字符,并用Unicode转义符替换非ASCII字符:

$result = call_user_func_array('array_map', array(
    'boolval', array(
        "1", 
        '0', 
        true, 
        false
    )
));

输出

String s = "Temperature: 98.6°F (37.0°C)";
StringBuilder buf = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
    if (c >= 0x20 && c <= 0x7E) // visible ASCII character
        buf.append(c);
    else
        buf.append(String.format("\\u%04x", (int) c));
}
String t = buf.toString();
System.out.println(t);

在Java 9+中,它甚至更简单:

Temperature: 98.6\u00b0F (37.0\u00b0C)