gpt4 book ai didi

java - 为什么这个 Java 编码是 UTF-8 --> Latin1 错误?

转载 作者:行者123 更新时间:2023-11-29 04:12:50 24 4
gpt4 key购买 nike

我要下载this UTF-8 文件并将其转换为 Java (Android) 中的 Latin1。在第 443 行,Frango-dâ~@~Y¡gua-menor 被翻译成 Frango-d?água-menor 而不是 Frango-d'água-主。与第 465 行相同,其中 Descriçã£o fÃsicaâ~@¦ 被翻译成 Descrição física?,最后是讨厌的 ? .

这个文件似乎不是有效的 UTF-8?但是 iconv -f utf-8 -t iso-8859-1//TRANSLIT 在这个文件上工作得很好。

这是我用来下载的代码(下载的文件在infofile):

                fos = new FileOutputStream(infotxt);
out = new OutputStreamWriter(fos, 'Latin1');
fis = new FileInputStream(infofile);
br = new BufferedReader(new InputStreamReader(fis));
while ((line = br.readLine()) != null) {
out.write("\n"+line.trim());
}
br.close();
out.close();
fis.close();
fos.close();

最佳答案

您链接的文件是 UTF-8 编码的 HTML 文件,它使用 Latin-1 字符集之外的字符。例如。而不是您期望的 Latin-1 引号(Frango-d'água-menor,使用代码 U+0027),它使用外观相似的右单引号 U+2019( Frango-d'água-menor).这不是 Latin-1 集的一部分,因此您会得到一个替换问号。

由于 Latin-1 无法编码整个 Unicode 字符集,您必须接受这样的事情。

最好的机会是在写入有限的 Latin-1 集之前识别问题字符并进行字符串替换。

关于java - 为什么这个 Java 编码是 UTF-8 --> Latin1 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54010172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com