检索阿拉伯字符串时使用.Net的IBM Informix数据库编码问题

时间:2015-12-01 07:05:09

标签: .net encoding arabic informix

从IBM INFORMIX DATABASE检索数据时遇到此问题

- 我已设置版本2.90 像这样存储在DB中的数据

  

نيمبالىبادرهاسرادهىراجو

当我从informix中检索这个时,得到的格式错误,如此

  

äíãÈÇáìÈÇÏÑåÇÓÑÇÏåìÑÇÌæ

数据库使用此编码en_us.819 所以我尝试了很多解决这个编码的解决方案 我在.NET中创建了这个方法,以Uni编码这种错误的格式来纠正阿拉伯语格式

private static string UniCode_IBM819(string str)
        {
            Encoding iso = Encoding.GetEncoding("iso-8859-1");
            Encoding unicode =    Encoding.GetEncoding(708);//Encoding.GetEncoding(864);//Encoding.UTF8;
            //byte[] unicodeBytes = unicode.GetBytes(str);
            byte[] isoBytes = iso.GetBytes(str);
            byte[] utfBytes = Encoding.Convert(iso,unicode,  isoBytes);
            return unicode.GetString(utfBytes);


        }

我尝试了3种编码但是得到了像

这样的结果
  

?????? ???? ????? ?????

1 个答案:

答案 0 :(得分:1)

问题已解决

我正在使用这种方法:

 private static string UniCodeIso819Towin1256(string src)
        {
            Encoding iso819 = Encoding.GetEncoding("iso8859-1");
            Encoding win1256 = Encoding.GetEncoding(1256);
            byte[] isoBytes = iso819.GetBytes(src);
            return win1256.GetString(isoBytes);
        }

将此返回值'äíãÈÇáìÈÇÏÑåÇÓÑÇÏåìÑÇÌæ'转换为原始格式,如'نيمبالىبادرهاسرادهىراجو'