我收到了每个SFTP下载的供应商的文件。我们的系统都在Windows上工作。
当我在Notepad ++中打开文件时,状态栏显示“UNIX”和“UTF-8” 特殊字符无法正确显示。
我尝试将文件转换为Notepad ++允许的不同格式,但没有人将char'OSC'转换为德语字母'ä'。这是一个已知的Unix-Windows事物吗?我的google-foo显然不够好。
答案 0 :(得分:2)
在Windows上常见的是文件的编码与编辑器甚至其xml标头所说的不匹配。人们很草率。也许它真的是UTF-16,或者是非标准的Windows扩展ascii,我认为可能是cp-1252。 (这在* nix上并不常见,因为我们通常只使用utf-8,不需要其他人......不要说* nix用户不那么草率)
要弄清楚它是哪种编码,我会复制一份文件,然后删除不存在问题的位(将Mägenwil留作整个文件)然后保存,并使用linux命令“file”,将告诉正确的编码是什么(仅对小文件可靠......它不会读取整个文件;也许notepad ++会做同样的事情)。删除其他位的原因是它可能是编辑器用于检测的UTF-8的混合,加上其他东西。
我会尝试linux中的iconv命令进行测试。例如:
iconv -f UTF-16 -t UTF-8 -o outfile infile
任何编码转换都应该可以用C#或任何特色语言进行,只要你知道它是如何被肢解的,这样你就可以反转它。如果你发现它是utf-8的一部分并且是其他部分,那么请记住不要转换整个文件,而只是转换重要的部分。