c# 如何将阿拉伯字符编码为utf8?

标签 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);

但我认为这是不正确的 所以,我需要帮助

最佳答案

您不需要将字符串转换为 Windows-1256 字符集。这只是:

// 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);

同样在大多数情况下(除了使用非常低级的 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áì

这里不需要使用UTF-8。

关于c# 如何将阿拉伯字符编码为utf8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33754753/

相关文章:

php - 如何在 PHP 脚本中使用 UTF-8 字符?

java - 通过在 java 中使用 UTF-8 字符集输出流将 UTF-16 字符写入文件,但文件中的结果数据仍然是 UTF-16。为什么?

linux - 编码 : unrtf SYMBOL. 字符映射需要更改

c# - 将上下文菜单项添加到操作系统范围内的所有文本框

java - J#和C#有什么区别

c# - 在异步任务中使用 HttpContext

Android 媒体编解码器类型 "video/mp4v-es"- 是否与 MPEG-4 第 2 部分(MPEG-4 视觉效果)相同?

python - Beautiful Soup 无法识别 Python 3、IPython 6 控制台上的 UTF-8 编码

mysql - 编码不同于utf-8的csv文件中的数据以什么编码写入mysql?

c# - 在 C# 构造函数中等待 AsyncMethod