Avatar ·

如何在C#中无需显式指定编码获取字符串的一致字节表示?

你好!我是一名C#初学者,在将字符串转换为字节时遇到了问题。我需要通过网络发送字符串数据并保存到文件,但我注意到重新读取时数据有时会不同。 我尝试过使用`Encoding.Default`,但在不同计算机上结果不同。后来我尝试了`Encoding.ASCII`,但它不支持俄语字母和其他Unicode字符。现在我这样做: ```csharp string text = "Привет, мир!"; byte[] bytes = Encoding.UTF8.GetBytes(text); string restored = Encoding.UTF8.GetString(bytes); ``` 这有效,但问题是:为什么我必须始终显式指定`Encoding.UTF8`?难道.NET不能自动确定正确的编码吗?毕竟C#中的字符串内部已经以Unicode存储。为什么没有像`text.ToBytes()`或`text.GetBytes()`这样简单的方法? 我在Stack Overflow上看到过类似的问题,有数百万次浏览,但那里建议始终指定编码。但我觉得这很不方便,而且容易出错。