1

我知道这是个老问题,但我对之前给出的答案不满意。我的问题是如何使用 UTF-8 或任何技术显示法语字母(如 é、à 等)。

目前这些正在显示“?”。

我的代码是:

InputStream is = null;
try {
    if(CommonUtilities.prefs.getString("KEY_LOCALE", "fr").equalsIgnoreCase("fr")){
        is = getAssets().open("terms_txt_fr.txt");  
    }else{
        is = getAssets().open("terms_txt_en.txt");
    }

    String term_tx =convertStreamToString(is);
    String valueUTF8 = new String(term_tx.getBytes(), "UTF-8");

    terms_tx.setText(valueUTF8);
} catch (IOException e) {
    e.printStackTrace();
}
4

1 回答 1

1

您的代码很好,但您需要确保您的输入是 UTF-8 编码的。

有很多方法可以做到这一点。它们中的每一个都特定于您的环境,例如您的操作系统。这里给出了一个很好的总结: 在字符集之间转换文本文件的最佳方法?

在 Linux 上(我猜在 OSX 上是一样的)你这样做:

iconv -f ISO-8859-15 -t UTF-8 in.txt > out.txt

大多数优秀的文本编辑器都有如何保存文件的选项。您可能也想检查一下。在现代操作系统中,UTF-8 应该是默认值。

于 2013-09-12T07:04:41.803 回答