你好。再次向您请教问题。我的应用部署在WM6.0手机上。
有一个功能是从服务端查询数据,提交请求,解读返回:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.GetEncoding("GBK"));
string backstr = sr.ReadToEnd();
我在模拟器,公司的测试机上,返回的串(包含汉字),都是正常的。
在客户的几台机器上,中文总是乱码(数字和英文字符没问题).
返回的数据是在LISTVIEW中显示的。listview和一些button按钮的字体设置的
字体是Microsoft Sans Serif。
listview中,columnheader中的中文是正常的,button中的汉字也是正常的。
基本推断在这个地方出问题了:
sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.GetEncoding("GBK"));
string backstr = sr.ReadToEnd();
是不是在使用GBK重新编码时,使用了不合适的字库?Encoding.GetEncoding("GBK")到底依赖什么字库?
(在注册表中有指示吗?我只知道注册表中的\Software\Microsoft\FontLink\SystemLink中存了些字体。)
这个问题折磨我很长时间了,请黎老师给些指导
附:
返回的乱码:
{"state":"0","appMessage":"璇锋眰鎴愬姛", //注: "璇锋眰鎴愬姛"应该是 "请求成功"
"jsonarray":[
{"mc":"楠愯揪","id":"402880ef0d35ed44010d3e3b3cea3e28"},
{"mc":"涓滈鏃ヤ骇闃冲厜","id":"402880ef0d35ed44010d3e3b6f453e29"},
]}
从返回的内容看,重新编码从服务返回的流使,使用的字库是支持中文的(重新组码的结果中没有方块(口))。