Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 什么代码页编码一个'ç';作为'º';(0x3f 0xba)_.net_Encoding_Globalization_Codepages - Fatal编程技术网

.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编码
从我收到文件的那个人那里,我不能指望得到帮助。(使用谷歌翻译)他向我明确表示,他发现仅仅创建文件非常困难,而且他使用的软件(我相信是SAP)是我无法访问的

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

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

记事本++它可能会混淆,因为您的文件没有使用字节顺序标记

你如何处理你的文件

尝试将它们作为二进制读取,然后尝试不同的编码以获得字符串。 如果不将它们作为二进制读取,则可能会进行默认编码

“?”就是一个标志


可能会有帮助

如果我采用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不是一个完美的答案,但它将“é”表示为“?”,而不是“?”。