我正在尝试使用C#中的Encoding.Convert
方法,使用以下代码将字符串从编码1256转换为864(都是阿拉伯语)。
static void example()
{
string unicodeString = "ابتثجحخدذرزسشصضطظعغفقكلمنهوي";
// Create two different encodings.
Encoding cp1256 = Encoding.GetEncoding(1256);
Encoding unicode = Encoding.Unicode;
// Convert the string into a byte array.
byte[] unicodeBytes = unicode.GetBytes(unicodeString);
// Perform the conversion from one encoding to the other.
byte[] cp1256Bytes = Encoding.Convert(unicode, cp1256, unicodeBytes);
// ^
// |
// Above convert works
Encoding cp864 = Encoding.GetEncoding(864);
byte[] cp864bytes = Encoding.Convert(cp1256, cp864, cp1256Bytes);
//Above convert does not work and it returns an array of ?
string cp864String = cp864.GetString(cp864bytes);
// Display the strings created before and after the conversion.
Console.WriteLine("Original string: {0}", unicodeString);
Console.WriteLine("CP864 converted string: {0}", cp864String);
}
从UNICODE到1256的转换工作正常,我得到所有字符,但是,当我从1256转换为864时,我得到问号字符(?)。
请提出任何建议。
答案 0 :(得分:0)
从here
获得这个可能不支持
Encoding.GetEncoding(864).GetBytes
操作系统。但是你可以实现自己的转换 使用此表格的字符到字节: