首页 新闻 会员 周边

编码转换问题

0
悬赏园豆:30 [已解决问题] 解决于 2008-10-03 18:52

代码如下

Code
string src = "中文里有English能否正常显示?";
byte[] dftBytes = Encoding.Default.GetBytes(src);
byte[] ascBytes = Encoding.Convert(Encoding.Default, Encoding.ASCII, dftBytes);
string dst = Encoding.ASCII.GetString(ascBytes);
Console.WriteLine(dst);
好像是没什么问题啊,结果输出的是

????English???????

问题补充: 我进行这个转换是有目的的 我读入一个ANSI编码的文件,进行字符处理,由于我的字母表有限我只能处理ASCII编码的字符,因为ASCII是用两个独立字节来表示一个汉字的,所以我用256大的字母表就够了。 但是处理完了我得输出啊,我必须把ASCII转会ANSI,结果就是转成ASCII没问题,我的程序也可以正常处理,但是转不会ANSI,我输出的中文都是问好了。
JimLiu的主页 JimLiu | 菜鸟二级 | 园豆:300
提问于:2008-10-02 12:12
< >
分享
最佳答案
0

不能转换为 ASCII, 你可以看看你那个 ascBytes 的内容,所有的中文部分都是 值为 63 的字符,就是'?'

也就是说将中文转换为ASCII是,将原有信息丢失了。

建议转换为 UTF-8,当然按楼上所说转换为 GB2312也可以。

eaglet | 专家六级 |园豆:17139 | 2008-10-03 07:17
其他回答(1)
0
Code
byte[] ascBytes = Encoding.Convert(Encoding.Default, Encoding.ASCII, dftBytes);

你把代码转为ASCII编码当然有问题了,是GB2312编码。

麦舒 | 园豆:452 (菜鸟二级) | 2008-10-02 12:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册