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