在Android / Java中用utf-8字符替换字符串中的非英语字符

时间:2016-05-12 14:08:26

标签: java android

我需要将一些非英文字符替换为\ u00格式。

喜欢:BetalingsMåde,所以可疑角色是需要转换为\ u00e5

我甚至尝试了一切

updateRequest = updateRequest.replaceAll(“[^ \ p {ASCII}]”,“”);

但这只会删除非英文字符。

此外,我需要通过带有HTTP请求的POST发送此请求(也已尝试

调用setRequestProperty( “内容类型”, “应用/ JSON;字符集= UTF-8”);

没有运气,所以如果还有答案的话。

提前致谢!

2 个答案:

答案 0 :(得分:1)

如果要转换为unicode转义字符串,可以执行以下操作:

org.apache.commons.lang3.StringEscapeUtils.escapeJava("Your string to escape");

这是Apache Commons Lang 3 Package

的一部分

答案 1 :(得分:0)

在java中String / char已经包含Unicode文本。但有些事情可能会出错。混乱的字符串总是意味着必须纠正进入点。

java源代码中的

硬编码字符串需要与编译器和编辑器相同的编码。现在我将IDE的编码设置为UTF-8。

属性文件默认限制为ISO-8859-1,这意味着应使用\uXXXX

必须使用指定文件的编码读取

正在读取的文件。通常存在没有编码的重载方法。不应使用旧的FileReader / FileWriter,它们使用当前的平台编码 - 不可移植。

如果错误地定义了数据库,或者JDBC驱动程序可以与其他编码进行通信,那么来自数据库的文本只会有问题。

我不确定您是否需要以下内容,这有点像 java2ascii 工具。

String toAscii(String s) {
    StringBuilder sb = new StringBuilder(s.length() * 9 / 10);

    for (int i = 0; i < s.length(); ++i) {
        int ch = (int) s.charAt(i);
        if (0 < ch && ch < 128) {
            sb.append(ch);
        } else {
            sb.append(String.format("\\u%04x", ch));
        }
    }
    return sb.toString();
}

更有可能使用setRequestProperty("content-type","text/json;charset=utf-8");,因此确实使用了charset(文本)。或者甚至更可能在响应上,而不是请求。