.net 什么代码页编码一个'ç';作为'º';(0x3f 0xba)
今天我收到一个客户发来的文件,我必须阅读,但其中包含奇怪的字符。使用已知的名字,我可以猜出一些字符的意思 例如:.net 什么代码页编码一个'ç';作为'º';(0x3f 0xba),.net,encoding,globalization,codepages,.net,Encoding,Globalization,Codepages,今天我收到一个客户发来的文件,我必须阅读,但其中包含奇怪的字符。使用已知的名字,我可以猜出一些字符的意思 例如: Realname | Encoded as | sign | hex ----------|--------------|-------|------- Françios | Fran?ºios | ç | 3f ba André | Andr?? | é | 3f 3f Hélène | H??l?¿ne | è
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来说是已知的)来导入文件,看看它们是否包含我知道的单词。但没有代码页能让我满意
- 在Notepad++中打开该文件时,会认为它是ANSI,并显示不需要的字符。(但它有一个有用的十六进制编辑器插件)
- 其他文件(来自同一用户&zipfile)采用UTF-8编码
可能会有帮助 如果我采用UTF-8编码的文本,假装是,然后将其转换为UTF-8或类似的编码,我就可以得到这些结果。“?”来自以下事实:0xc3处的CP850字符为”├", 它在拉丁语1或派生编码中不存在,因此转换将其替换为“?”
编辑:我使用iconv进行了更广泛的搜索,和或比CP850更匹配。根据您的要求,我这次使用的一行代码是:
for enc in `iconv -l`; do echo -n "$enc: "; echo -n "ç é è" | iconv -s -f $enc -t "LATIN1//TRANSLIT" 2>/dev/null; echo; done
记事本++说文件是什么?在右下角查找。UNICODE、ANSI、UTF-8和什么字符集?记事本++认为它的
ANSI
。但ANSI不包含7F以上的字符(我被告知).ba&bf当然更大。你需要再次请求该文件,使用UTF-8或UNICODE,你说他使用软件,所以我肯定他在某个地方对此有选择…@balexanre:我正想知道。(可惜他只会说法语,认为UNICODE是某种独角兽).但我也想知道他是如何得到这种奇怪的编码的。我想你只需要识别所有的特殊情况并手动搜索替换它们。几乎所有(如果不是全部的话)代码页保持ASCII部分0-7F不变,因此我无法想象任何人会故意将重音编码为问号序列。我已经尝试了.Net已知的每个代码页。我只是想知道是否还有其他代码页?您是如何进行此转换的?编写了一个小应用程序或使用一些软件?我编写了一个快速的PHP脚本,该脚本完成了mb\u convert\u encoding
在“ç”上查找从mb_list_编码所列的每种编码转换为UTF-8时,可能会产生涉及“º”的结果。这将我指向CP850,然后我计算出“?“可能是转换为拉丁语-1或其他比Unicode更受限制的编码。虽然CP850到拉丁语1不是一个完美的答案,但它将“é”表示为“?”,而不是“?”。