C#.NET接收微信小程序的传参中文乱码了,如何解决?
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
微信小程序get 参数是car_number: %25E9%25B2%2581K9,也就是鲁K9,但是我网站的ashx页面Request值是椴並9,使用Server.UrlDecode也是这个结果,是什么原因?跟网站默认gb2312有关系吗? ![]() 你遇到的问题确实和网站默认编码(GB2312)有直接关系,但根源在于浏览器与服务器之间发生了 编码与解码的错位 和 URL编码的重复处理。 简单来说,你看到的 🧐 问题出在哪?一步一步拆解乱码的产生为了让你更清晰地理解,我把这个过程拆解成三步:
💡 如何解决?这里有几种方案核心思路是:既然参数被编码了两次,那么就需要解码两次,并且要确保最后一次用正确的字符集(UTF-8)来解读字节。 方案一:精确控制解码过程(推荐)这个方法最可靠,因为它能精确指定解码用的字符集,避免依赖服务器默认配置。 在你的ashx代码中,可以这样写: csharp // 1. 获取自动解码过一次的值,此时它是 "%E9%B2%81K9" string partiallyDecoded = Request["car_number"]; // 2. 手动进行第二次URL解码,但这次要指定用UTF-8 string correctResult = System.Web.HttpUtility.UrlDecode(partiallyDecoded, System.Text.Encoding.UTF8);
方案二:从根本上统一编码(长远之计)这个方法可以一劳永逸地解决后续所有类似问题。 xml <system.web> <globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" /> </system.web> 这样做之后,整个应用程序处理URL参数和响应时,都会默认使用UTF-8,能最大程度避免乱码问题。 该文章在 2026/6/3 11:00:46 编辑过 |
关键字查询
相关文章
正在查询... |