一个字符的不同 ASCII 值

Different ASCII value for one character

我正在制作一个 c# 程序,该程序使用 ZXing 库生成 QRCode 以供 Windows 移动手持设备读取(c# 但专有条码 reader:摩托罗拉符号)

我使用 winform 文本框将标签内容设置为 é(尖锐小写 e),并将其读取到我的设备,它显示为 Ú(尖锐大写 U)

当我使用 Android 条码扫描器读取标签时,它显示 é...

[这里无法上传图片,稍后我会post条码]

我想编码是这里的问题所以我查看了发送的字节数:233

在这个网站上:http://www.ascii-code.com/ , it says that é is 233 which is the expected behavior. But on this website : http://www.theasciicode.com.ar/ 是说 é 是 130 而 Ú 是 233! (顺便说一句,我正在输入 Alt+233 以在我的 Windows 计算机上显示 Ú)

编辑:显然第一个网站显示 ISO-8859-1 (windows-1252) 字符。但问题仍然存在:根据第二个网站 ?

,其中的编码 é 编码为 130

编辑 2:我完全同意 UTF-8 可以轻松解决我的问题(适用于 android,但我无法告诉我的设备 "Hey this barcode is UTF-8 encoded!" 所以它会显示原始信息,请参阅下面的答案。

提前致谢!

同一个ASCII码有2个不同的字符是正常的。阅读有关 ASCII 代码页的信息,例如 Win1250,1251,1252...

ASCII 码在 7 位(0 到 127 之间)上是唯一的。但是,8 位上有很多不同的扩展版本。参见 https://en.wikipedia.org/wiki/Extended_ASCII 如果您需要“é”或“ù”等特殊字符,我建议您使用 UTF-(8 或 16)编码或 Unicode。

现在我明白了:设备的条码 reader 以 DOS 850 编码读取数据!

第一个提示是键盘:通过查看网络,我发现您可以通过键入命令 chcp 查看 Windows 中的默认编码。它在我的电脑上显示 850。快速谷歌搜索将我带到了这个页面:https://en.wikipedia.org/wiki/Code_page_850 其中 é 是 130!耶!

我所要做的就是告诉设备将值显示为 Windows-1252 字符集:

Encoding.Default.GetString(Encoding.GetEncoding(850).GetBytes(txt),0,txt.Length);

对于问题的一般目的,感谢@MarkGravell,网站错误地谈论一般 "extended ascii" 代码,但这些代码在编码 (https://en.wikipedia.org/wiki/Category:DOS_code_pages) 之间发生变化,因此是无关紧要的。