编码转换完,为什么汉字还是乱码?

博客提出代码将ASCII编码转换为GB2312编码后汉字仍乱码的问题,并给出相关代码示例。代码先将字符串转为ASCII字节数组,再转换为GB2312字节数组,最后转为GB2312字符串,但转换后汉字显示异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么下面的代码从ascii转换成gb2312后,汉字仍然是乱码??
   string unicodeString = "ADDDMT00025100000000058404111817:54:44LMADL     辽宁中外运船务代理有限公司    I040584A.DMT                  大连海关                      WZM               ";
   // Create two different encodings.
   Encoding ascii = Encoding.ASCII;
   Encoding gb2312 = Encoding.GetEncoding("GB2312");

   // Convert the string into a byte[].
   byte[] asciiBytes = ascii.GetBytes(unicodeString);
   char[] asciiChars = ascii.GetChars(asciiBytes);
   string asciiString = new string(asciiChars);

   // Perform the conversion from one encoding to the other.
   byte[] gb2312Bytes = Encoding.Convert(ascii, gb2312, asciiBytes);
           
   // Convert the new byte[] into a char[] and then into a string.
   // This is a slightly different approach to converting to illustrate
   // the use of GetCharCount/GetChars.
   char[] gb2312Chars = gb2312.GetChars(gb2312Bytes);
   string gb2312String = new string(gb2312Chars);

   // Display the strings created before and after the conversion.
   Console.WriteLine("Original string: {0}", unicodeString);
   Console.WriteLine("ascii string:{0}",asciiString);
   Console.WriteLine("gb2312 converted string: {0}", gb2312String);

转载于:https://www.cnblogs.com/lndllsn/archive/2005/01/08/88605.html

解决乱码的方法很多,最简单的方法就是把Windows的系统区域设置成该操作的区域,不过这样来回折腾也够麻烦的。虽说Windows 2000出现以来,系统预设的地区编码便可经由控制台来自行改变,但是更改需要重新启动系统,并且采用新的设定对系统的其它应用程序也有一定的影响,十分不方便。   微软开发了一个程序名叫“AppLocale”,类似 Windows XP 的基于 Unicode 的平台可按以下方法模拟运行非 Unicode 应用程序所需的语言环境,它可以让你的 Windows XP (或更新) 操作系统下,执行非系统预设的地区编码之程序,也就是说在繁体版的Windows XP下执行GB编码的程序后,此GB程序呈现出来的文字都将是工整的简体字,而不是乱码。AppLocale也可应用在其它各国的程序上,不管是日文、韩文、法文,都可适用,任何文字编码的程序都可借由它来正确地显示文字,享受原本只有 Unicode 的程序才有的好处,从此告别程序乱码的苦恼。有了AppLocale后,我们便可以指定某一程序,以指定的文字编码呈现,不需重新开机,也不会影响其它程序的运作。   到上面提供的地址下载安装程序螅 苯拥慊骶涂梢园沧傲恕?lt;/P>   1.点击“开始”菜单,在弹出的菜单里依次选择“所有程序→Microsoft AppLocale→AppLocale”即可运行此程序(如图1所示)。   2. 在Microsoft AppLocale向导窗口里,直接点击“下一步”,选择“启动应用程序”复选项,点击“浏览”按钮,在“请选择一个可执行程序”窗口里选择要执行的程序点击“打开”即可添加毕。   3. 继续点击“下一步”,向导会打开“检测语言”窗口供用户选择所要使用的语言(如图2所示)。   点击“应用程序的语言”旁边的下拉三角,在弹出的菜单中选择要使用的程序语言后,单击“下一步”继续。   4. 最后,点击“成”,Applocale将在无兼容支持的情况下启动目标应用程序,即当前的系统设置就能满足所选语言的目标应用程序的要求了。   通过Applocale设置之后,不管是使用GB文字编码的程序,还是需要 DirectX 的GB码版本的游戏,都可以正确地显示简体中文,如同在简体版Windows一般,终于可以和乱码说Bye-Bye了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值