Par*_*igm 2 c# encoding character-encoding
我尝试将阿拉伯字符编码为utf8作为样本
string clientName="???";
Encoding iso = Encoding.GetEncoding(1256);
Encoding utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(clientName);
byte[] isoBytes = Encoding.Convert(utf8, iso, utfBytes);
string clientNameArabic = iso.GetString(isoBytes);
Run Code Online (Sandbox Code Playgroud)
但我认为这是不正确的,所以,我需要帮助
您不需要将字符串转换为Windows-1256charset.只是:
// on server side(before sending as byte array)
var bytes = Encoding.UTF8.GetBytes(clientName);
// on client side(after reciving byte array)
clientName = Encoding.UTF8.GetString(bytes);
Run Code Online (Sandbox Code Playgroud)
在大多数情况下(除非使用非常低级别的IO,如网络套接字或二进制文件流),您根本不需要考虑编码转换,因为UTF-8是.NET中使用的默认编码 - 级别I/O操作.
要完成将正常的Unicode字符串转换???为带有符号的破坏mojibake的奇怪任务,Óèïåçäèðÿ您应该使用阿拉伯语Windows编码(1256)编写字符串,然后使用西欧Windows编码(1252)将其读回:
var source = "???";
var westernLatin = Encoding.GetEncoding(1252);
var arabic = Encoding.GetEncoding(1256);
var bytes = arabic.GetBytes(source);
var result = westernLatin.GetString(bytes); // Uáì
Run Code Online (Sandbox Code Playgroud)
这里不需要使用UTF-8.
| 归档时间: |
|
| 查看次数: |
6663 次 |
| 最近记录: |