Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#转换编码字符串I和#xDCÜæØÜÜ;?E通读阿拉伯语_C#_Encoding_Arabic - Fatal编程技术网

C#转换编码字符串I和#xDCÜæØÜÜ;?E通读阿拉伯语

C#转换编码字符串I和#xDCÜæØÜÜ;?E通读阿拉伯语,c#,encoding,arabic,C#,Encoding,Arabic,我需要在WinForm中正确显示可读的阿拉伯字符串,在记事本++中,我将编码设置为ANSI,粘贴字符串“ÌÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜí2”,然后我进入编码->字符编码->阿拉伯->Windows 1256,得到正确的值 2 我怎么能用C#来做呢?, 我试过了,但没用: Encoding en_source = Encoding.GetEncoding("windows-1250"); Encoding en_dest = Encoding.Unicode;

我需要在WinForm中正确显示可读的阿拉伯字符串,在记事本++中,我将编码设置为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);

您希望从代码页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正确转换。假设此无意义字符串在旧应用程序中以相同的方式生成,这对您来说应该很好。

您希望将代码页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正确转换。假设这个无意义字符串在旧应用程序中以相同的方式生成,那么它应该适合您。

您可以将“جــطــبـــ”粘贴到任何您想要的位置。C#天生理解UTF-8。无需进行奇特的转换。@nvoigt,我只有从旧阿巴斯恢复的“ÌÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ2”代码的结果是什么?输出错误、异常、编译错误…H。Pauwelyn,输出错误,字符串不可读!我找到了解决办法;Encoding en_source=Encoding.Default;Encoding en_dest=Encoding.GetEncoding(“windows-1256”);byte[]srcBytes=enÜu source.GetBytes(“ÌÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ;返回en_dest.GetString(srcBytes);您可以将“جــطـابـتــ”粘贴到您想要的任何位置。C#天生理解UTF-8。无需进行奇特的转换。@nvoigt,我只有从旧阿巴斯恢复的“ÌÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ2”代码的结果是什么?输出错误、异常、编译错误…H。Pauwelyn,输出错误,字符串不可读!我找到了解决办法;Encoding en_source=Encoding.Default;Encoding en_dest=Encoding.GetEncoding(“windows-1256”);byte[]srcBytes=enÜu source.GetBytes(“ÌÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ;返回en_dest.GetString(srcBytes);生成这些数据的旧应用程序是由Delphi7和paradox db开发的,这使得源代码编码是特定的,但我无法识别它,唯一的方法是测试@MohamedSAIM看起来paradox db依赖代码页来显示国际字符,而Delphi喜欢使用系统的默认代码页来编写字符串。不幸的是,这意味着如果使用了具有不同默认代码页的系统,或者如果更新了系统并且更改了默认代码页,那么您很可能会遇到一个字符串,其中我的答案不起作用,并且您必须找出使用的代码页。希望这对您来说不会是个问题。生成这些数据的旧应用程序是由Delphi7和paradox db开发的,它使得源代码编码是特定的,但我无法识别它,唯一的方法是测试@MohamedSAIM看起来paradox db依赖代码页来显示国际字符,而Delphi喜欢使用系统的默认代码页来编写字符串。不幸的是,这意味着如果使用了具有不同默认代码页的系统,或者如果更新了系统并且更改了默认代码页,那么您很可能会遇到一个字符串,其中我的答案不起作用,并且您必须找出使用的代码页。希望这对你来说不会是个问题。