我应该为TextBox控件的序列化数据指定哪种编码

假设我的WinForms应用程序中有一个TextBox

当用户单击按钮时,应用程序应通过TCP发送存储在此TextBox的序列化值。

对于序列化我正在使用Newtonsoft.Json库,如下所示:

 string json = JsonConvert.SerializeObject(credentials); 

其中credentials是保存TextBox值的类的对象。

然后我需要通过TcpClient类通过网络发送它:

 TcpClient client = new TcpClient(IpAddress, Port); NetworkStream stream = client.GetStream(); // ??? 

但我需要先将json字符串转换为字节数组,所以我必须指定一个文本编码。 我应该指定哪种文本编码非常安全?

我不能只将它设置为ASCII,因为用户可以输入unicode字符。

.NET Framework使用UTF-16编码(由UnicodeEncoding类表示)来表示字符和字符串。 因此,您可以使用System.Text.Encoding.Unicode.GetBytes来获取字符串的字节。

欲获得更多信息:

  • .NET Framework中的字符编码

任何Unicode编码(UTF-7,UTF-8,UTF-16,UTF-32,…)都可用于编码Unicode字符。 UTF-8可能是最紧凑的,具体取决于文本中使用的书写系统。