中文乱码 encodeURI来解决URL传递时的中文问题

微信小程序 实现拼图功能 微信小程序 实现碎片拼图 阅读详情

解决中文乱麻问题,页面端发出的数据作两次encodeURI

var name="张三";

encodeURI(encodeURI(name));

后台解码:

 URLDecoder.decode(name,"UTF-8");

参考:http://blog.youkuaiyun.com/zqd_java/article/details/53608585

------------------------------------------------------------------------------------------------------------------

URL编码与两次encodeURI

当使用地址栏提交查询参数时,如果不编码,非英文字符会按照操作系统的字符集进行编码提交到服务器,服务器会按照配置的字符集进行解码,所以如果两者不一致就会导致乱码。

encodeURI函数采用UTF-8对URL进行编码,所以如果服务器在进行解码时使用的是其他的编码方式就会出现乱码,默认的服务器配置的解码字符集都不是UTF-8,所以大部分情况下地址栏提交中文查询参数时会产生乱码;针对这种情况,可以连续使用两次encodeURI在客户端(主要指浏览器)对非英文字符进行编码,然后在服务端使用java.net.URLDecoder(String."UTF-8")解码,即可得到正确的中文。

如果只进行一次encodeURI,得到的是UTF-8形式的URL,服务器端通过request.getParameter()解码查询参数(通常是iso-8859-1)就会得到乱码。

如果进行两次encodeURI,第一次编码得到的是UTF-8形式的URL,第二次编码得到的依然是UTF-8形式的URL,但是在效果上相当于首先进行了一次UTF-8编码(此时已经全部转换为ASCII字符),再进行了一次iso-8859-1编码,因为对英文字符来说UTF-8编码和ISO-8859-1编码的效果相同。在服务器端,首先通过request.getParameter()自动进行第一次解码(可能是gb2312,gbk,utf-8,iso-8859-1等字符集,对结果无影响)得到ascii字符,然后再使用UTF-8进行第二次解码,通常使用java.net.URLDecoder("","UTF-8")方法。

两次编码两次解码的过程为:

UTF-8编码->UTF-8(iso-8859-1)编码->iso-8859-1解码->UTF-8解码,编码和解码的过程是对称的,所以不会出现乱码。

encodeURL函数主要是来对URI来做转码,它默认是采用的UTF-8的编码.
. UTF-8编码的格式:一个汉字来三个字节构成,每一个字节会转换成16进制的编码,同时添加上%号.

假设页面端输入的中文是一个“中”,按照下面步骤进行解码

1.第一次encodeURI,按照utf-8方式获取字节数组变成[-28,-72-83],对字节码数组进行遍历,把每个字节转化成对应的16进制数,这样就变成了[E4,B8,AD],最后变成[�,�,�]  此时已经没有了多字节字符,全部是单字节字符。

2、第二次encodeURI,进行编码,会把%看成一个转义字符,并不编码%以后字符,会把%编码成%.把数组最后变成[�,�,�]然后就把处理后的数据[�,�,�]发往服务器端,
当应用服务器调用getParameter方法,getParameter方法会去向应用服务器请求参数
应用服务器最初获得的就是发送来的[�,�,�],应用服务器会对这个数据进行URLdecode操作,应用服务器进行解码的这一次,不管是按照UTF-8,还是GBK,还是ISO-8859,,都能得到[�,�,�],因为都会把%解析成%.并把这个值返回给getParameter方法

3、再用UTF-8解码一次,就得到"中"了。

想想看,如果不编码两次,当服务器自动解码的时候,假如是按照ISO-8859去解码UTF-8编码的东西,就是会出现乱码。


储能系统架构和控制 探讨了储能系统中EMS(能源管理系统)、BMS(电池管理系统)和PCS(功率转换系统)之间的协同机制,以及组串式和集中式储能系统的技术架构、优势和局限性。EMS根据电价、电网需求和电池状态制定充放电策略,BMS提供电池数据,PCS执行充放电控制。组串式系统具有独立管理和灵活扩展的优势,但成本较高;集中式系统成本效益高,但存在环流和木桶效应问题。 阅读详情

相关推荐

2026年ERP选型实战:按规模分档,避开成本与实施陷阱

企业资源计划(ERP)是现代企业数字化转型的核心系统,它将财务、供应链、制造、人力等业务整合到统一平台。随着云计算和人工智能技术的发展,ERP已从传统本地部署的记录工具演变为SaaS订阅制、具备AI辅助决策能力的智能运营平台。不同规模企业在选型时的关注点差异巨大:小微企业追求轻量化和快速出报表,中型企业需要在流程标准化与业务灵活性间取得平衡,大型集团则注重多法人管控和数据治理。此外,制造、电商、工程等行业对ERP的模块要求也各有侧重,成本核算数据跑不通更是普遍痛点。如何结合企业规模与行业特征,制定合理的选型

weixin_34320724的博客 378

encodeURI 、encodeURIComponent 以及中文乱码问题

关于前端: encodeURIComponent(),  对文本框的输入值进行编码,特殊字符编码结果是%加上这些符号的ASCII码十六进制对照表。 encodeURI() 将整个url编码,但不会对如下字符进行编码  @#$&=.:/;?+ ,这些符号的基本上就是http URL中的特殊符号,是不进行编码的。 @   # 网页中的一个位置 :/.?=& ...

积跬步,成千里。 1万+

数据结构——滑动窗口

入:下标为 i 的元素进入窗口,更新相关统计量。如果 i < k−1 则重复第一步更新:更新答案。一般是更新最大值 / 最小值出:下标为 i−k+1 的元素离开窗口,更新相关统计量✔1. 定长子串中元音的最大数目✔2. 找到一个数字的 K 美丽值✔4. 子数组的最大平均数 |方法一:前缀和方法二:滑动窗口7. 得到 K 个黑块的最少涂色次数8. 爱生气的书店老板9. 几乎唯一子数组的最大和10. 长度为 K 子数组中的最大和11. 可获得的最大点数12. 最少交换次数来组合所有的1 ||

qq_68915288的博客 762

URL地址中中文乱码详解(javascript中encodeURI和decodeURI方法、java.net.URLDecoder.encode、java.net.URLDecoder.decode)

引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息。乱码问题就此产生了,该如何解决呢?且听本文详细道来。 1.  问题的引出    在Restful的服务设计中,查询某些信息的时候,一般的URL地址设计为: get /basic/service? keyword=历史 , 之类的URL地址。 但是,在...

bingguang1993的博客 4263

从收音机到Arduino:手把手教你用BJT三极管搭建一个简易音频放大器(附电路图与元件清单)

本文详细介绍了如何使用BJT三极管搭建简易音频放大器,涵盖电路原理、元件选择、设计步骤及调试技巧。通过实践项目帮助电子爱好者深入理解BJT的放大特性,并提供与Arduino结合的扩展应用方案,适合创客和DIY玩家。

aitie1479的博客 437

基于EKF的UWB-IMU融合定位系统在农业机器人中的抗干扰优化与Matlab仿真

本文探讨了基于扩展卡尔曼滤波(EKF)的UWB-IMU传感器融合定位系统在农业机器人中的应用。通过Matlab仿真验证,该系统有效解决了农业环境中UWB信号遮挡和IMU累积误差问题,实现了厘米级高精度定位,显著提升了机器人在复杂场景下的抗干扰能力和导航可靠性。

numpy6sculptor的博客 622

解决java.net.URLDecoder.encode与EncodeURI乱码问题

主要重视加密与解码的顺序,在后台加密一次,传给前台解码,由于对中文编码的内部处理不一样,会出错,所以应该先加密两次再传输给前台,这样前台接到后第一次解码即可还原后台加密一次的编码(这时再在前台解码一遍,即可得到原始数据),然后在传给后台,后台接收到一次加密的数据后,由于js与java传输的过程会自动编码,然后解码两次,后台即可得到原始数据。 在项目中, 将一个字符串从后台(J2EE项目)传到

Little_Matches的博客 1万+

Vue路由守卫实战:利用token实现跨项目免登录跳转(最新版)

本文详细介绍了如何利用Vue路由守卫和Token验证实现跨项目免登录跳转方案。通过核心架构设计、路由守卫精细化控制及Token交换安全实践,有效解决了多系统跳转中的认证问题,提升用户体验和系统连贯性。

n7o8p的博客 137

encode url 兼容_URL传中文参数导致乱码的解决方案之encodeURI

通过URL传中文参数时,在服务端后台获取到的值往往会出现乱码问题,解决方案有很多种,本文主要介绍如何通过encodeURI来解决中文乱码问题:first:前端传递参数的时候需要对中文参数进行两次encodeURI处理:​var requestUrl ='url?roleName='+encodeURI(encodeURI("rowObj.appName"));注:rowObj.appName​表示...

weixin_39828457的博客 558

FCN---训练cityspaces

未经允许,不要随意转载! 最近想试试用FCN训练自己的数据集,想想标注是一件很费劲的事,于是就想到了用其他库里的数据,这里选用了cityspaces,默认已经配置好FCN. 1、下载cityspaces https://www.cityscapes-dataset.com/ 需要注册一个账号 cityspaces包含2...

wangyu088的专栏 2030

避免踩坑!杰理AC63蓝牙名修改常见问题及解决方案(含BLE后缀处理)

本文详细解析了杰理AC63蓝牙设备名称修改的全过程,包括基础操作、BLE后缀处理及高级调试技巧。针对蓝牙名修改中的常见问题,提供了实用的解决方案和代码示例,帮助开发者避免踩坑并实现高效定制。

q6r7s8t9的博客 410

前端汉字encode_中文乱码 encodeURI来解决URL传递时的中文问题

[size=large] 通过URL传中文参数时,在服务端后台获取到的值往往会出现乱码。解决方案有很多种。本文介绍如何通过encodeURI来解决中文乱码问题。首先,在前端页面准备参数的时候,需要对中文参数进行encode处理:var url = 'HelloWorldServlet?star_name='+encodeURI(encodeURI("刘德华"));window.open...

weixin_42525632的博客 1422

看GRE协议的数据封装

GRE网络数据封装流程

FanFF的博客 80

中文乱码 encodeURI来解决URL传递时的问题

前台获取数据var str ="张三";encodeURI解码后传参到后台变成乱码可以经过两次encodeURI解码再传参var name="张三";encodeURI(encodeURI(name));后台解码: URLDecoder.decode(name,"UTF-8");eg:String str = java.net.URLDecoder.decode(personNameStrp,"U...

wokeyixuehui的博客 438

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

java需要 %3c标识符%3e_中文乱码 encodeURI来解决URL传递时的中文问题

解决中文乱麻问题,页面端发出的数据作两次encodeURIvar name="张三";encodeURI(encodeURI(name));后台解码:URLDecoder.decode(name,"UTF-8");---------------------------------------------------------------------------------------------...

weixin_42502896的博客 1280

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

encodeURI来解决URL传递时为什么需要进行两次encodeURI编码

说明:1 .encodeURL函数主要是来对URI来做转码,它默认是采用的UTF-8的编码.         2. UTF-8编码的格式:一个汉字来三个字节构成,每一个字节会转换成16进制的编码,同时添加上%号.  下面先看一段前端代码: /** *初始化datagrid */ function initDatagrid(id,typevalue,organame){

时光匆匆独白 将颠沛磨成卡带 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

解决JS在url中传递参数时参数包含中文乱码的问题

解决JS在url中传递参数时参数包含中文乱码的问题 1.传参页面JavaScript代码: function go_mark(id,jobname,headimgurl,nickname){ window.location.href = "mark.html?id="+id+"&jobname="+encodeURI(jobname)+"&headimgurl...

u012972294的博客 2388

url中向后台传递中文乱码解决方法

https://www.cnblogs.com/shijiaoyun/p/3992446.html 方法一: 1、jsp中代码   var userNo = $('#prisoner_id').val(); userNo = encodeURI(userNo); allPrisonerGrid.datagrid('options').url = 'mobilemanage...

尽力漂亮的博客 1732

url地址栏获取中文参数乱码

一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码:1.传参页面Javascript代码:function send(){ var url = "test01.html"; var userName = $("#userName").html(); window.open(encodeURI(url + "?userName=" + userName...

maggie_live的博客 3140

JavaScript利用URL向后台传入中文参数乱码问题解决之道!

转自:http://blog.163.com/eugeneheen_chen@126/blog/static/120812157201291994916866/ 我们经常会在前台请求以后后台对应URL时,在URL中利用此URL向后台传递参数,但如果参数为中文会存在乱码问题。下面我们考虑一个场景来详细说明URL传递参数时的乱码解决之道。 假设我们页面中拥有一个输入框、一个提交按钮,当我们

shushuidewoniu的专栏 1230

前端汉字encode_URL传中文参数导致乱码的解决方案之encodeURI

通过URL传中文参数时,在服务端后台获取到的值往往会出现乱码问题,解决方案有很多种,本文主要介绍如何通过encodeURI来解决中文乱码问题:first:前端传递参数的时候需要对中文参数进行两次encodeURI处理:?var requestUrl =‘url?roleName=‘+encodeURI(encodeURI("rowObj.appName"));注:rowObj.appName?表示...

weixin_35470511的博客 2412

url乱码

1.url内有特殊字符 (例如将list转为json串进行传送) 需要在传值之前编码一次 将特殊字符进行转换,在第二个jsp中接收到的即为正常内容。 第一个jsp: if(airportId != null &amp;&amp; activityId!=null){ var jsonArray = JSON.stringify(pointFormList); //将对象、数组转换成字符串 ...

丰的博客 816

URL传递中文解决方案

首先,弄清楚为什么url传递中文会转码或者乱码,以及http头 contentType="text/html; charset=GBK" 的作用。 html代码会经过web服务器,浏览器处理,所以造成转码或者乱码的原因,可能涉及到:页面本身的设置、web服务器的设置、浏览器的设置。 在动态页面,比如jsp、php中,可以设置 contentType="text/html;...

aduzz62084的博客 311
上一篇: attr()方法 jquery
下一篇: 录入框 input 中只能录入数字 或字母 或汉字
前端蜗牛君
博客等级 码龄10年 274粉丝 158原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值