我需要在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);
答案 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正确转换。假设这个无意义的字符串在旧应用程序中以相同的方式生成,这应该可以正常工作对你而言。