我正在制作一个c#程序,它生成一个带有ZXing库的QRCode,可由Windows Mobile手持设备读取(c#但专有的条形码阅读器:Motorola Symbol)
我使用winform文本框将标记内容设置为é
(急性小写e)并将其读取到我的设备,该设备读取Ú
(急性大写U)
当我使用Android条形码扫描仪阅读标签时,它会显示é
...
[我无法在此处上传图片,我稍后会发布条形码]
我认为编码是这里的问题,所以我看一下发送的字节:233
在这个网站上:http://www.ascii-code.com/,它说é
是233,这是预期的行为。但是在这个网站上:http://www.theasciicode.com.ar/表示é
为130,Ú
为233! (顺便说一句,我正在输入Alt + 233以在我的Windows计算机上显示Ú)
é
编码为130 ?
编辑2:我完全同意UTF-8可以轻松解决我的问题(适用于Android,但我无法告诉我的设备“嘿,这条码是UTF-8编码的!”所以它会显示原始信息,见下面的答案。
提前谢谢!
答案 0 :(得分:2)
对于相同的ASCII代码,有2个不同的字符是正常的。阅读有关像Win1250,1251,1252 ...
这样的ASCII代码页答案 1 :(得分:1)
现在我明白了:设备的条形码阅读器以 DOS 850 编码方式读取数据!
第一个提示是键盘:通过在网络上查看,我发现您可以通过键入命令chcp
在Windows中查看默认编码。它在我的电脑上显示850。我快速搜索到了这个网页:https://en.wikipedia.org/wiki/Code_page_850 其中é
是130!耶!
我所要做的就是告诉设备将值显示为Windows-1252 charset:
Encoding.Default.GetString(Encoding.GetEncoding(850).GetBytes(txt),0,txt.Length);
对于问题的一般目的,感谢@MarkGravell,这些网站错误地讨论了一般的“扩展ascii”代码,但这些代码在编码之间发生了变化(https://en.wikipedia.org/wiki/Category:DOS_code_pages),因此无关紧要。
答案 2 :(得分:0)
ASCII码在7位(0到127之间)上是唯一的。但是,8位有很多不同的扩展版本。见https://en.wikipedia.org/wiki/Extended_ASCII 如果您需要特殊字符“é”或“ù”,我建议您使用UTF-(8或16)编码或Unicode。