C#转换编码字符串IÜÜæØÜÜ?E?可读的阿拉伯语

时间:2018-03-28 15:36:27

标签: c# encoding arabic

我需要在WinForm中正确显示可读的阿拉伯字符串,在Notepad ++中我将编码设置为ANSI,粘贴字符串“ÌÜÜæØÜÜÇÈáÊíÌÜÜí2”,之后我转到编码 - >字符编码 - >阿拉伯 - > Windows 1256,我得到正确的值 جوطابلتيجي2

我怎么能用C#做到这一点? 我试着这样做但是不起作用:

        Encoding en_source = Encoding.GetEncoding("windows-1250");
        Encoding en_dest = Encoding.Unicode; 
        byte[] srcBytes = en_source.GetBytes("ÌÜÜæØÜÜÇÈá ÊíÌÜÜí 2");
        return  en_dest.GetString(srcBytes);

1 个答案:

答案 0 :(得分:1)

您想要从代码页1252转换为1256.

var oldStr = "ÌÜÜæØÜÜÇÈá ÊíÌÜÜí 2";

var enSource = Encoding.GetEncoding(1252); // Windows 1252
var enDest = Encoding.GetEncoding(1256); // Windows 1256

var srcBytes = enSource.GetBytes(oldStr);

var newStr = enDest.GetString(srcBytes);

请注意,这适用于这种情况,但是您可能还有其他情况无法使用enSource作为代码页1252正确转换。假设这个无意义的字符串在旧应用程序中以相同的方式生成,这应该可以正常工作对你而言。