gpt4 book ai didi

c# - Encoding.GetEncoding(437).GetString() 错误?

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:28 27 4
gpt4 key购买 nike

我有以下测试程序

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 GetBytes 工作正常
Unicode 中的 167 => CP437 中的 21
但是 GetString 不工作
CP437 中的 21 => unicode 中的 21

这是错误还是我的错误?

最佳答案

对于 0-31 范围内的字符,CP437 不是“双向”的。如您链接的维基百科页面所述:

For many uses, the codes in the range 0 to 31 and the code 127 will not produce these symbols. Some (or all) of them will be interpreted as ASCII control characters.

将 Unicode 字符映射到此范围内受支持的 CP437 字符是可行的,但反之则不行。例如,以字节 13 和 10 表示的字符:如果您将它们放在 CP437 字符串中,您实际上可能希望保留回车符和换行符,而不是将其转换为项目符号和音符。这种行为是正常的:它不是错误。

关于c# - Encoding.GetEncoding(437).GetString() 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57976504/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com