【问题标题】:How do I go about setting TextView to display UTF-8 when the String is not an embedded Resource?当字符串不是嵌入式资源时,如何设置 TextView 以显示 UTF-8?
【发布时间】:2013-04-21 22:13:21
【问题描述】:

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

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

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

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

【问题讨论】:

  • logcat(支持 UTF-8)是否显示正确的字符?这将确保您的输入端正确处理它。

标签: android json utf-8 textview


【解决方案1】:

所以,事实证明文本文件确实编码正确,问题是我没有将 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;
    }
}

【讨论】:

    猜你喜欢
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    相关资源
    最近更新 更多