6

今天我收到一个客户的文件,我必须阅读,但它包含奇怪的字符。使用已知名称,我可以猜出某些字符的含义。

例如:

Realname  | Encoded as   | sign  | hex
----------|--------------|-------|-------
Françios  | Fran?ºios    | ç     | 3f ba
André     | Andr??       | é     | 3f 3f
Hélène    | H??l?¿ne     | è     | 3f bf
etc.
  • 我已经尝试了所有代码页(.Net 已知)来导入文件,并查看它们是否包含我知道的单词。但是没有代码页让我满意。
  • 在记事本++中打开文件认为它是ANSI,并且还显示不需要的字符。(但它有一个有用的十六进制编辑器插件)。
  • 其他文件(来自同一用户和 zipfile)以 UTF-8 编码。

从我收到文件的那个人那里,我不能指望帮助。(使用谷歌翻译)他向我明确表示,他发现创建文件非常困难,而且他正在使用我无法访问的软件(我相信是 SAP)。

有没有其他方法可以找到他刚刚发送给我的文件的编码?

4

2 回答 2

6

如果我采用 UTF-8 编码的文本,假装它是CP850,然后将其转换为Latin-1Windows-1252或类似的编码,我可以获得这些结果。这 ”?” 来自 0xc3 处的 CP850 字符是“├”这一事实,它在 Latin-1 或派生编码中不存在,因此转换将其替换为“?”。


编辑:我使用 iconv 进行了更广泛的搜索,并且CP437CP862CP865比 CP850 更匹配。既然你问了,我这次使用的单行是:

for enc in `iconv -l`; do echo -n "$enc: "; echo -n "ç é è" | iconv -s -f $enc -t "LATIN1//TRANSLIT" 2>/dev/null; echo; done
于 2011-03-11T14:37:32.817 回答
1

它应该是 UTF-8 或 UTF-16。它们包含几乎所有常规字符。看起来您有解码/编码问题。

notepad++ 它可能会混淆,因为您的文件不使用字节顺序标记。

你如何处理你的文件?

尝试将它们读取为二进制,然后尝试使用不同的编码来获取字符串。如果您不将它们读取为二进制,则可能会发生默认编码。

这 ”?” 是一个标志。

可能会有所帮助

于 2011-03-11T14:22:50.513 回答