应用程序无法正确呈现德语文本

时间:2016-07-11 14:14:43

标签: android character-encoding

我的应用程序将一些csv文件作为输入并显示这些文件的内容。有些行包含德语字母(ä,ß,ü,...),我的应用程序无法正确呈现这些字母。

我将Manifest中指定的编码更改为<?xml version="1.0" encoding="ISO-8859-3"?>(即使我认为编码声明特定于Manifest本身而不是app),我选择了German作为AVD设置中的语言,我还在gradle.build中包含了以下选项:

compileOptions{
    encoding "ISO-8859-3"
}

我的尝试都没有奏效,我的应用仍然没有正确地写文字。

如何在我的应用程序的Gui中正确呈现csv文件?

注意:文件在AndroidStudio中正确编写

更新

我发现了问题的来源和解决方案。所以似乎问题来自csv文件。我用文本编辑器打开了我的csv文件并用明确的UTF-8保存,现在它的内容正确地写在我的应用程序的gui中。

注意

转变是指在使用InputStreamReader(my_csv, "ISO-8859-3")读取文件时指定编码,但我想如果将来csv文件格式良好,可能会引入问题

2 个答案:

答案 0 :(得分:0)

我发现了问题的来源和解决方案。所以问题来自于csv文件格式化。事实上,我用文本编辑器打开了我的csv文件并用明确的UTF-8保存,现在它的内容正确地写在我的应用程序的gui中。

注意

转变是指在使用InputStreamReader(my_csv, "ISO-8859-3")读取文件时指定编码,但我想如果将来csv文件格式良好,可能会引入问题

我搜索了错误的方向,问题是我如何读取文件。我在阅读csv文件时必须指定编码:

stream = new InputStreamReader(the_file, "ISO-8859-3");

更新:实际上问题似乎来自csv文件。我用文本编辑器打开了我的csv文件并用显式UTF-8保存,现在我不需要用InputStreamReader指定编码类型,并且其内容写得正确

答案 1 :(得分:0)

我认为您的编码是错误的。这是一个包含所有encondings的链接: List encoding

你可以看到,德语的编码是 ISO 8859-16 (ISO 8859-3适用于土耳其语等语言)

我希望这种编码能正确显示你的文字:)

在阅读csv时,不要忘记精确编码:

new InputStreamReader(your-csv_file, "ISO-8859-16");