js解决url传递中文参数乱码问题

这篇具有很好参考价值的文章主要介绍了js解决url传递中文参数乱码问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景复现:

做后台管理系统的时候,出现了一个bug:点击“导出数据”按钮,打开文件里面是空的。
js解决url传递中文参数乱码问题

乱码的url
js解决url传递中文参数乱码问题
正确的url
js解决url传递中文参数乱码问题

bug解决思路:

1.文件为空,应该是请求的url路径不对,显示一个空的模板即没带参数,因此可以判断是参数有误;
2.控制台打出url,可以看出是参数中文乱码;
3.怎样解决中文乱码问题?(大坑就在这里)
当时我尝试了encodeURI 和 decodeURI,以及encodeURIComponent 和 decodeURIComponent方法都没用(一般情况下都是有效果的),后来就是在导出数据接口那里打印{key}、{form[key]}分别是啥,然后得出undefined,后来我尝试加了一个value,没想到就可以了。

js解决url传递中文参数乱码问题
js解决url传递中文参数乱码问题

思路纠错:

我之前一直在对比这个页面的导出接口,和其他页面的导出接口是否写的一样?结果是一样的,而没有去思考它这里具体的值要的是什么,因此挺花费时间的。

url传参中文乱码的解决方法

1、escape 和 unescape

escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。

采用unicode字符集对指定的字符串除0-255以外进行编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z。

escape()函数用于js对字符串进行编码,不常用。

//跳转页
location.href = './test.html?'+escape('name=张三&age=18')
 
//接收页
var str = unescape(location.search.substr(1));
 
//url显示
'test.html?name%3D%u5F20%u4E09%26age%3D18'

2、encodeURI 和 decodeURI

把URI字符串采用UTF-8编码格式转化成escape各式的字符串。
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURI()用于整个url编码。

//跳转页
location.href = encodeURI('./test.html?name=张三&age=18');
 
//接收页
var str = decodeURI(location.search.substr(1));
 
//url显示
'test.html?name=张三&age=18'

3、encodeURIComponent 和 decodeURIComponent

与encodeURI()的不同的是,“; / ? : @ & = + $ , #”,这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码。至于具体的编码方法,两者是一样。把URI字符串采用UTF-8编码格式转化成escape格式的字符串。文章来源地址https://www.toymoban.com/news/detail-418027.html

//跳转页
location.href = './test.html?'+encodeURIComponent('name=张三&age=18');
 
//接收页
var str = decodeURIComponent(location.search.substr(1));
 
//url显示
'test.html?name%3D张三%26age%3D18'

到了这里,关于js解决url传递中文参数乱码问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JS】实现 Base64 编码和解码(及中文乱码问题)

    JavaScript 定义了两个与 Base64 相关的全局方法。 遇到中文编码需要先做一次 URI 组件编码或对解码后的内容进行 URI 解码 示例:Base64 编码 示例:Base64 解码 中文乱码处理方法: 按照 Base64 插件:编解码: js-base64 ,判断是否是Base64编码格式: is-base64 插件使用

    2024年02月15日
    浏览(37)
  • 简单解决jsp中文乱码问题

    初学jsp制作一个简单的响应页面 具体代码如下: 保存为test.jsp文件,启动tomcat访问,出现下图: 在框内输入:vae 出现下图: 可是\\\"username\\\"看起来实在不舒服,决定将它改成\\\"用户名\\\" 这时问题出现: 本该出现\\\"用户名\\\"的地方出现了一串乱码: 所谓响应中的乱码,就是显示页面

    2024年02月16日
    浏览(51)
  • Debian系统解决中文乱码问题

    、安装locales apt-get install locales 2、设置语言选项 dpkg-reconfigure locales 选择如下四项:     zh_CN GB2312     zh_CN.GBK GBK     zh_CN.UTF-8 UTF-8     en_US.UTF-8 UTF-8 回车然后选择zh_CN.UTF-8 3、查看语言设置 locale 确保LANG=zh_CN.UTF-8 如何不是,执行export LANG=zh_CN.UTF-8 设置环境变量(临时设置

    2024年02月09日
    浏览(47)
  • 解决CentOS 7中文乱码问题

    CentOS 7是一种常用的Linux发行版,但在某些情况下,用户可能会遇到中文乱码的问题。这个问题通常出现在终端或文本编辑器中,当显示中文字符时,可能会显示为乱码或方框。在本文中,我将为您提供一些解决CentOS 7下中文乱码问题的方法。 方法一:设置系统的字符集 在C

    2024年02月04日
    浏览(47)
  • 解决hive表中文乱码问题

    使用的mysql版本:Server version: 5.7.31 现象描述:字段名称和字段描述等存储进如hivemetastore是中文,查询出来也是???等无法识别的中文乱码; 中文乱码的情况分为两种情况: 新建hive集群防止中文乱码 已有的hive集群中文乱码的纠正 在构建hive开发环境的时候,需要实现构建号

    2024年02月09日
    浏览(41)
  • VScode注释中文时乱码怎么办?VScode中文注释乱码问题的解决方法

    不管是在哪一种编辑器上,都会有自动默认的一种编码格式,在vscode编辑器中默认的编码格式是utf-8,但是在注释的时候,因为使用的字符会不一样,所以可能存在着默认的配置文件,有可能是其他的编码格式,所以因为编码格式不对应,导致了在注释的时候出现了乱码的情

    2024年02月11日
    浏览(59)
  • 解决hive建表中文乱码问题

    一、解决hive建表中文乱码问题 问题: 关于中文乱码问题,我们可以从以下几个方面进行考虑: (1)判断hive表的存储格式是否是UTF-8: 如果hive表的存储格式不是UTF-8,也会导致中文乱码。 (2)判断输入的数据,其编码格式是否是中文字符集UTF-8: hive默认使用UTF-8编码,如

    2024年02月14日
    浏览(36)
  • 解决docker容器中文字符乱码问题

    在命令行中,输入中文出现乱码或者键入错误的情况: 这里我想输入:”中文“,但是出现乱码。 并且,我在之前已经创建好镜像,通过镜像生成了容器。 1.使用locale查看当前容器的系统使用的字符集。 2.使用locale -a查看当前容器的系统支持可以使用的字符集。 3.在一些博

    2024年02月03日
    浏览(53)
  • 解决JavaScript中文乱码问题的方法

    在JavaScript编程中,处理字符串时经常会遇到中文乱码的问题。这种问题通常发生在字符串截取操作中,特别是当截取的字符串中包含中文字符时。本文将介绍一些解决JavaScript中文乱码问题的方法,并提供相应的源代码示例。 方法一:使用Unicode编码 一种常见的解决方案是使

    2024年02月04日
    浏览(44)
  • 解决VSCode输出框中文乱码问题

    在使用VSCode进行开发过程中,有时候会遇到输出框中显示的中文乱码问题。这可能是由于编码设置不正确或缺少相应的字体支持导致的。以下是一些解决方法,供您尝试解决这个问题。 方法一:更改VSCode的编码设置 打开VSCode,并在顶部菜单中选择“文件”(File)选项。 在下

    2024年02月03日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包