我有一个页面显示从XML检索到的内容没有问题:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<Fields>
<NamePrompt>名字</NamePrompt>
</Fields>
</Root>
页面编码设置为GB18030并且显示完美。但是,当我从使用双字节字符输入的HttpContext.Current.Request.Form中检索输入的文本时,检索到的字符串包含不可读的字符。显然,单字节字符很好。
我尝试过以下无效:
byte[] valueBytes = Encoding.UTF8.GetBytes(HttpContext.Current.Request.Form["fullName"]);
string value = Encoding.UTF8.GetString(valueBytes);
我没有看到像日语或韩语这样的其他双字节语言的问题。如何从GB18030编码的页面成功检索双字节字符?
答案 0 :(得分:0)
运行代码的平台是什么?根据{{3}},在Win2K之前根本不支持GB18030,直到WinXP才支持GB18030。
如果不是问题,我们需要更多细节。你怎么知道角色不可读?您是否尝试在浏览器以外的其他位置显示它们?此时,我们只能假设它是字体问题,或代码中的编码转换问题,而您尚未向我们展示。
顺便说一句,你发布发布的代码并没有真正做任何事情 - 只是从.NET字符串到UTF-8字节数组的完全安全(并且毫无意义)往返再次。但无论如何,这是一个死胡同;如果由
返回的字符串HttpContext.Current.Request.Form["fullName"]
...已损坏,这是您必须解决的问题。事后修复字符串(如果可能的话)是没有办法解决的。