我有以下测试程序
char c = '§';
Debug.WriteLine("c: " + (int)c);
byte b = Encoding.GetEncoding(437).GetBytes("§")[0];
Debug.WriteLine("b: " + b);
char c1 = Encoding.GetEncoding(437).GetString(new byte[] { 21 })[0];
Debug.WriteLine("c1: " + (int)c1);
这会产生以下结果:
c: 167
b: 21
c1: 21
我所看到的here http://en.wikipedia.org/wiki/Code_page_437GetBytes 工作正常
unicode 中的 167 => CP437 中的 21
但 GetString 不起作用
CP437 中的 21 => unicode 中的 21
这是一个错误还是我的错误?
CP437 对于 0-31 范围内的字符不是“双向”的。正如您链接的维基百科页面中所述:
对于许多用途,0 到 31 范围内的代码和代码 127 将
不产生这些符号。其中一些(或全部)将被解释
作为 ASCII 控制字符。
将 Unicode 字符映射到此范围内受支持的 CP437 字符是可行的,但反之则不然。例如,采用字节 13 和 10 表示的字符:如果您将它们放在 CP437 字符串中,您实际上希望保留回车符和换行符,而不是转换为项目符号和音符。此行为是正常的:这不是错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)