我的应用程序将一些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文件格式良好,可能会引入问题
答案 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");