ASP.NET 网站编码格式引起的传参问题。

七色鸟 2012-07-11 10:48:08
新的系统编码格式是:UTF-8
老的页面编码格式是: GB2312
新的系统的URL参数 提交到老的系统中,中文参数是乱码。
如何保证UTF-8编码,和GB2312编码 同时 提交到GB2312中不乱码。

前提是,新老系统的编码格式(即web.config中globalization节点不能设置了。因为如果设置的话,页面上乱码的字会很多。)



if (!new WebCommon().IsGB2312(Request["word"]))
word = HttpUtility.UrlDecode(Request["word"], System.Text.Encoding.GetEncoding("GB2312"));
else
word = Server.UrlDecode(Request["word"]);

...全文
104 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
天下在我心 2012-07-12
  • 打赏
  • 举报
回复
这样问题确实解决了?
七色鸟 2012-07-12
  • 打赏
  • 举报
回复

Request.ServerVariables["QUERY_STRING"]

竟然要这样子获得中文参数,然后再进行解码。
七色鸟 2012-07-11
  • 打赏
  • 举报
回复

word = HttpUtility.UrlDecode(Request["word"], System.Text.Encoding.GetEncoding("UTF-8"));


也不可以的。
七色鸟 2012-07-11
  • 打赏
  • 举报
回复


/// <summary>
/// 判断是否为GB2312编码格式
/// </summary>
/// <param name="word"></param>
/// <returns></returns>
public bool IsGB2312(string word)
{
byte[] bytes = Encoding.GetEncoding("GB2312").GetBytes(word);
if (bytes.Length <= 1)
{
return false;
}
else
{
byte byte1 = bytes[0];
byte byte2 = bytes[1];
if (byte1 >= 176 && byte1 <= 247 && byte2 >= 160 && byte2 <= 254) //判断是否是GB2312
{
return false;
}
else
{
return true;
}
}
}
zhuzhu837_1 2012-07-11
  • 打赏
  • 举报
回复
应该没有问题的
七色鸟 2012-07-11
  • 打赏
  • 举报
回复
这帖子要沉了么?

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧