我在可以访问的软件存储库中运行以下命令:
找到。 -not -name“ .svn ” - type f -exec file“{}”\;
并看到许多输出行,如
./ File.java:ISO-8859 C ++程序文本
这是什么意思? ISO-8859是一种编码类,而不是某种编码。我期望所有文件都是UTF-8,但大多数文件都是以编码形式出现的。 ISO-8859也是UTF-8的合适子集吗?
我是否可以使用ISO-8859-1作为源编码安全地转换所有这些文件,同时将其转换为带iconv
的UTF-8?
答案 0 :(得分:1)
问题不同,但我认为答案正是您所寻找的:
Linux & C-Programming: How can I write utf-8 encoded text to a file?
答案 1 :(得分:1)
我担心Unix file
程序在这方面相当糟糕。它只是意味着它是一个字节编码。这并不意味着它是ISO-8859-1。它甚至可能在非ISO字节中,尽管它通常会表明这一点。
我的系统比文件好得多,但它是在英语语料库上训练的,所以可能不如德语那么好。
简短的回答是file
的结果不可靠。您必须知道要转换它的真实编码。
答案 2 :(得分:0)
file
使用的字符集检测相当简单。它承认UTF-8。它通过查找ISO 8859编码具有“漏洞”的0x80-0x9F范围内的字节来区分“ISO-8859”和“非ISO扩展ASCII”。但它没有尝试确定正在使用哪种 ISO 8859编码。这就是为什么它只是说ISO-8859
而不是ISO-8859-1
或ISO-8859-15
。