1

我遇到了一种奇怪的情况,即我从资源 XML 文件中加载的包含西班牙字符的字符串在我的 TextViews 中正确显示,但我从运行时通过 HTTP 加载的 JSON 文件中获取的字符串显示缺失字符 [] 框

ESPAÑOL例如,当嵌入到我的 XML 字符串中时工作正常,但是当从我的 JSON 中提取时呈现为 SPAÃ[]OL,因此 Ñ 被转换为 Ã 和缺少的字符!

我不确定在什么时候需要截取这些字符串并对其设置正确的编码。JSON文本文件本身是通过Node在服务器上生成的,所以,我不完全确定我是否应该对它进行编码,或者我是否应该在Android端对fileReader进行编码,或者可能设置TextView 本身是某种特殊的编码类型(我不知道这是一个选项,真的只是有点举手之劳)。

[编辑] 根据 ianhanniballake 的建议,我正在记录并看到这些古怪的字符实际上也出现在日志中。但是,当我在 Android 文件系统(它位于 SDCARD 上)上使用文本查看器查看 JSON 文件时,它看起来是正确的。

4

1 回答 1

3

所以,事实证明,文本文件确实编码正确,问题是我没有将 UTF-8 设置为 FileInputStream 上的编码......

解决方案是这样读取文件:

static String readInput() {
    StringBuffer buffer = new StringBuffer();
    try {
        FileInputStream fis = new FileInputStream("myfile.json");
        InputStreamReader isr = new InputStreamReader(fis, "UTF8");
        Reader in = new BufferedReader(isr);
        int ch;
        while ((ch = in.read()) > -1) {
            buffer.append((char) ch);
        }
        in.close();
        return buffer.toString();
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}
于 2013-04-30T06:46:50.000 回答