我应该为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可能是最紧凑的,具体取决于文本中使用的书写系统。