C#ASCII或Unicode

iTE*_*Egg 5 c# unicode ascii

嗨,我是编程和网络开发的初学者.我有一个关于ASCII和Unicode编码的问题.

在msdn和其他Web示例中执行以下操作:

byte[] byteData = Encoding.ASCII.GetBytes(data);
Run Code Online (Sandbox Code Playgroud)

这是因为这些代码示例是旧的吗?不应该是:

byte[] byteData = Encoding.Unicode.GetBytes(data);
Run Code Online (Sandbox Code Playgroud)

感谢您的输入!

Jon*_*eet 10

这取决于 - 您希望结果是ASCII还是UTF-16?当你想要另一个时,每个人都错了.

如果您正在谈论某些网络协议,则必须找出协议所期望的字符编码.使用错误的编码,坏事将发生.

当然,ASCII有很大的限制 - 它是基于英语的(仅限拉丁字符,没有重音符号),但它对某些协议是正确的.其他人可能会使用UTF-16(Encoding.Unicode),UTF-8或其他编码...或者他们会让你自己在协议中指定编码.

  • @ikurtz:我建议在大多数情况下使用UTF-8而不是Unicode,因为它*通常会减少流量.有一些例外(远东字符通常最终在UTF-8中更大)并且还有其他缺点(你不能直接从代码点的数量计算二进制数据的大小)但它通常是一个好主意IMO . (7认同)