传输中文乱码js解决方法
encodeURI要编码两次
var a="我的";
//编译两次
//window.location.href = "http://127.0.0.1:8080/kabao-api/xtetest/c.do?title="+encodeURI(encodeURI(a));
window.location.href=encodeURI(encodeURI("http://127.0.0.1:8080/kabao-api/xtetest/c.do?title="+a));
后台接收编译两次之后的代码操作
String title = request.getParameter("title");
System.out.println(title); //%E6%88%91%E7%9A%84
String encode = URLDecoder.decode(title, "UTF-8");
System.out.println(encode); //我的
编译一次
var a="我的";
//编译一次
//window.location.href = "http://127.0.0.1:8080/kabao-api/xtetest/c.do?title="+encodeURI(a);
window.location.href=encodeURI("http://127.0.0.1:8080/kabao-api/xtetest/c.do?title="+a);
后台接收编译一次之后的代码操作
String title = request.getParameter("title");
System.out.println(new String(title.getBytes("ISO-8859-1"), "UTF-8"));
一般情况下,tomcat容器中request.getParameter(paramName);容器会自动按照容器默认的编码进行解码,默认是iso-8859-1,因为encodeURI使用的是UTF-8编码规则来编的,如果将tomcat的配置文件server.xml中的
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8" />
URIEncoding修改成utf-8那样在后台就不用解码了,因为容器会自动按照utf-8进行解码。
如果不能修改容器的编码就在接收的参数的时候先使用iso-8859-1接收然后在使用utf-8获取比如:title.getBytes("ISO-8859-1"), "UTF-8")
前台提交的时候进行二次编码,在第一次进行编码的时候进行utf-8进行了编码因为utf-8是最灵活的utf编码形式,即兼容iso -8859-1又可以用来表示所有语言的字符,而且ISO-8859-1编码范围使用了单字节内的所有空间,把其他任何编码的字节流当作ISO-8859-1编码看待都没有问题。所以第一次编码就变成的单字节字符,第二次是为了与解码相对相应 即: 中文字符 ---->utf-8 -->utf-8(iso-8859-1) |||iso-8859-1容器解码-->utf-8用于解码-->中文字符 这样就相对应了,就不会产生编译乱码
也可以使用filter或者设置pageEncoding、contentType来设置定义编码
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
java 编码解码
java.net.URLEncoder.encode(String s,"编码");
java.net.URLDecoder.decode(String s,"编码");
js编码解码
encodeURI(String3.value);编码
decodeURI(String1.value);解码
escape(String);编码
unescape(string);解码
encodeURIComponent(URIstring);编码
decodeURIComponent(URIstring);解码
提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。
传输中文乱码js解决方法的更多相关文章
- php 使用phpmailer 发送邮件(附带中文乱码的解决方法)
下载phpmailer ,在程序里包含class.phpmailer.php 类 ,这里有中文乱码的解决方法 实例代码如下 <html> <head> <title&g ...
- xShell终端中文乱码完全解决方法
xShell终端中文乱码完全解决方法 xShell(xShell5)以及其他终端中文乱码的原因无非有三种:(1)Linux系统的编码问题:(2)xShell终端的编码问题: (3)两端的语言编码不一致 ...
- Mysql命令行中文乱码的解决方法
环境:Windows 8 64位,Mysql 5.0.96 for Win64 (x86) 数据库本身安装时默认已经是使用utf8编码的了,但在命令行中执行查询时,查询到的中文依然乱码,解决方法如下 ...
- 30. CentOS终端命令行显示中文乱码的解决方法
安装CentOS的时候选择了中文,结果在终端不能显示中文,都是乱码,解决方法:修改/etc/sysconfig/i18n,内容为 代码如下: LANG="zh_CN.GB18030&qu ...
- windows下SVN日志反馈中文乱码的解决方法
转自:https://shiyousan.com/post/635889908703806636 TortoiseSVN中文乱码的问题困扰了我好久,特别是每次使用“以标准差异文件显示修改”时,打开的文 ...
- 【IntelliJ IDEA】从资源文件读取出来就中文乱码的解决方法
在application.properties资源文件中设置两个自定义的属性以及属性值: com.sxd.name = "德玛西亚" com.sxd.want = "王者 ...
- ueditor 1.4.3 gbk asp 上传中文乱码 终极解决方法 ie6 ie8 也适用
[摘要:百度编纂器1.43 gbk asp 题目 1.firefox3.0下 单图上传 面没有了 面多图上传 中央的蓝色按钮(即 面击挑选图片)没有表现(附件上传出那个题目) 没有晓得我的水狐吃翔了 ...
- Sublime Text 3 中文乱码的解决方法
Sublime Text 3 中文乱码表现如下图: 解决方法很简单,三步搞定: 步骤一: 下载ConvertToUTF8,下载地址:http://pan.baidu.com/s/1gd5SWmB 步骤 ...
- mysql命令行以及mysql workbence查询结果中文乱码的解决方法
最近正在学习mysql,安装环境是windows server 2003 32位操作系统+mysql 5.1.47同时也安装了mysql命令行以及mysql workbench这里是test数据库cr ...
随机推荐
- this函数的理解
Javascript的this用法 this是Javascript语言的一个关键字. 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如, function test(){ this. ...
- hadoop 2.6.0上安装sqoop-1.99.6-bin-hadoop200
第一步:下载sqoop-1.99.6-bin-hadoop200.tar.gz 地址:http://www.eu.apache.org/dist/sqoop/1.99.6/ 第二步:将下载好的sqo ...
- android*API19
android android.accessibilityservice android.accounts android.animation android.app android.app.adm ...
- sqlserver2005重新安装(安装汇编错误,安装程序无法连接到数据库服务进行服务配置)
2014-01-09 16:41 1687人阅读 评论(1) 收藏 举报 分类: 数据库(1) 版权声明:本文为博主原创文章,未经博主允许不得转载. sqlserver2005重新安装(安装汇编错误, ...
- uva Fire!
算法:BFS Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner o ...
- C++读取一串不知个数的数字
#include <iostream> using namespace std; int main(){ ]; ; while(cin>>shuzu[i]){ i++; } ; ...
- 使用yii2实现读写分离(MySQL主从数据库)
读写分离(Read/Write Splitting). 1.原理:让主数据库(master)处理事务性增.改.删操作(INSERT.UPDATE.DELETE),而从数据库(slave)处理SELEC ...
- setTimeout与setInterval方法的区别
setTimeout与setInterval方法的区别 setTimeout()用于设定在指定的时间之后执行对应的函数或代码.,在全局作用域下执行 setTimeout(code,time[,args ...
- 从类的继承看socketserver源码
当我们拿到一份python源代码,我们要怎么去看呢? 下面我们以socketserver为例,看下面的一段代码: #!/usr/bin/env python # -*- coding: UTF-8 - ...
- DataTables选择多行
$(document).ready(function() { var table = $('#example').DataTable(); $('#example tbody').on( 'click ...