我正在尝试查找并替换ISO-8859-1编码的文件中的一些特殊字符,然后将结果写入以UTF-8编码的新文件:
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
[layout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
layout.estimatedItemSize = CGSizeMake(self.breadScrumbCollectionView.frame.size.width, 30);
self.breadScrumbCollectionView.collectionViewLayout = layout;
我的输入文件内容是:
“þ”:“ý”:“Þ”:“”ð“:”“Ý”:“”Г:”
问题是我的代码永远找不到指定的字符。 groovy脚本文件本身以UTF-8编码。我猜这可能是问题的原因,但后来我无法在ISO-8859-1中编码,因为我不能在其中写“Ş”“Ğ”等。
答案 0 :(得分:1)
我拿了你的代码示例,用一个用charset ISO-8859-1编码的输入文件运行它,它按预期工作。你能仔细检查你的输入文件是否真的用ISO-8859-1编码?这是我做的:
我从您的问题中提取了文件内容并使用保存 - >将其保存(使用SublimeText)到文件/tmp/test.txt
使用编码保存 - >西方(ISO 8859-1)
我使用以下Linux命令检查了文件编码:
file -i /tmp/test.txt
/tmp/test.txt: text/plain; charset=iso-8859-1
我将dumpfile
变量与/tmp/test.txt
文件和newfile
变量设置为/tmp/test_2.txt
我运行你的代码,我在控制台中看到了:
found a special char!
found a special char!
found a special char!
found a special char!
found a special char!
found a special char!
我在IntelliJ IDEA中检查了Groovy文件的编码 - 它是UTF-8
我检查了输出文件的编码:
file -i /tmp/test_2.txt
/tmp/test_2.txt: text/plain; charset=utf-8
我检查了输出文件的内容:
cat /tmp/test_2.txt
"ş": "ı": "Ş":" "ğ":" "İ":" "Ğ":"
我认为这不重要,但我使用了最新的Groovy 2.4.13
我猜你的输入文件编码不正确。请仔细检查文件的编码是什么 - 当我保存相同的内容但使用UTF-8编码时,您的程序无法按预期工作,我在控制台中看不到任何found a special char!
条目。当我显示ISO-8859-1文件的内容时,我看到类似的东西:
cat /tmp/test.txt
"�": "�": "�":" "�":" "�":" "�":"%
如果我使用UTF-8保存相同的内容,我会看到文件的可读内容:
cat /tmp/test.txt
"þ": "ý": "Þ":" "ð":" "Ý":" "Ð":"%
希望它有助于找到问题的根源。