无法从表单中检索简体中文字符

时间:2010-03-26 15:08:40

标签: asp.net character-encoding

我有一个页面显示从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编码的页面成功检索双字节字符?

1 个答案:

答案 0 :(得分:0)

运行代码的平台是什么?根据{{​​3}},在Win2K之前根本不支持GB18030,直到WinXP才支持GB18030。

如果不是问题,我们需要更多细节。你怎么知道角色不可读?您是否尝试在浏览器以外的其他位置显示它们?此时,我们只能假设它是字体问题,或代码中的编码转换问题,而您尚未向我们展示。

顺便说一句,你发布发布的代码并没有真正做任何事情 - 只是从.NET字符串到UTF-8字节数组的完全安全(并且毫无意义)往返再次。但无论如何,这是一个死胡同;如果由

返回的字符串
HttpContext.Current.Request.Form["fullName"]

...已损坏,这是您必须解决的问题。事后修复字符串(如果可能的话)是没有办法解决的。