Encoding.Convert Unicode to code page 864

时间:2015-01-14 11:52:26

标签: c# encoding arabic

我正在尝试使用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时,我得到问号字符(?)。

请提出任何建议。

1 个答案:

答案 0 :(得分:0)

here

获得这个
  

可能不支持Encoding.GetEncoding(864).GetBytes   操作系统。但是你可以实现自己的转换   使用此表格的字符到字节:

     

http://www.ascii.ca/cp864.htm