曾经涉及到用url传递汉字总少一个字,后来得知是utf-8编码的问题,最好通过server.urlencode后再传递。
这次遇到aspx页面接收html页面里的一个input值,通过request.form["test"]得到的是乱码。考虑可能同样是编码问题,首先想把传递过来的值由utf-8转换为gb2312,于是写了个转换函数:
不知是函数不对,还是没有对症,转换后的值仍为乱码(就是一堆问号)。
//content是要转编码的内容,sourceCode是原来的编码名称,targetCode是要转换成的编码名称
public static string StrConvCode(string content,string sourcCode,string targetCode)
{
Encoding source =Encoding.GetEncoding(sourcCode);
Encoding target = Encoding.GetEncoding(targetCode);
byte[] bSource= source.GetBytes(content);
byte[] bTarget = Encoding.Convert(source, target, bSource);
return target.GetString(bTarget);
}
再一次查询,后来偶尔发现在vs2003里web.config里有<globalization responseEncoding="gb2312" requestEncoding="gb2312"/>,考过来,ok好用了。在网上看到有的在globalization 里写的更多,但我用的时候会产生页面乱码,但传过来的值是正确的情况。