URL中文乱码及特殊字符处理
一、中文乱码
IE高版本(应该是9以上,不确定),在get方式请求中中文传到后台容易出现乱码问题。解决方法如下:
1、第一种,换成post方式
如果可以得话换成post方式就可以。如果采用表单或者ajax,都可以把数据放到表单域或者ajax的data中,采用post请求。
注:经测试,把数据放入form表单中,使用jQuery的serialize()方法获取要传输的数据,通过ajax的GET方法也不会有乱码问题。
2、第二种,使用encodeURI()
如果必须使用get方式将参数直接拼接在url中,可以是encodeURI()方法对中文参数进行编码。重要:需要使用两次encodeURI()方法。
如:action="www.baidu.com?name=encodeURI(encodeURI('小明‘))"
而后台拿到数据后同样需要解码,java代码:
- String name=request.getParameter("name");
- name= URLDecoder.decode(name, "UTF-8");
这样就可以正常使用了,当然还是第一种简单省事。
二、特殊字符
现在分布式项目很多,不同子项目之间经常需要来回传递url,有时候url中还有+,空格,/,?,%,#,&,=这些特殊字符,传递过程中容易丢失。解决的办法就是使用编码代替
+ URL 中+号表示空格 %2B
空格URL中的空格可以用+号或者编码 %20
/ 分隔目录和子目录 %2F
? 分隔实际的URL和参数 %3F
% 指定特殊字符 %25
# 表示书签 %23
& URL 中指定的参数间的分隔符 %26
= URL 中指定参数的值 %3D
PS:
js中:encodeURI()
var o={};
o.summaryTitle=encodeURI($("#summaryTitle").val());
$.ajax({
url:url,
data:o,
success:function({
});
});
action中:
String summaryType = request.getParameter("summaryType");
java.net.URLDecoder.decode(summaryTitle,"UTF-8")
java.net.URLDecoder.decode
在项目中碰到了个比较奇怪的问题,就是我在本地使用java.net.URLDecoder.decode(ruleName)方法解码,没有问题,本地的页面也可以正常打开。但是当我把代码移植到测试环境中去的时候,却打不开页面,查看后台日志也没有报错信息。
本地环境用的JDK1.6,tomcat用的7,测试环境JDK1.6 tomcat版本不明确
就纳闷了,因为这个方法已经提示过时了,就在考虑是不是这个问题导致的,应该有可以替代的方法,然后就去查看了下JDK的API,如下
试着将代码中的java.net.URLDecoder.decode(ruleName)修改为java.net.URLDecoder.decode(ruleName, "UTF-8");然后编译,替换测试环境的代码,发现问题解决了。
这应该就是JDK中有些过时的代码在低版本的tomcat中可能失效了,所以大家在以后的编程中一定要尽量避免过时方法的使用,以规避不必要的问题。
URL中文乱码及特殊字符处理的更多相关文章
- 一种另类的解决URL中文乱码问题--对中文进行加密、解密处理
情景:在资源调度中,首先用户需要选择工作目标,然后跟据选择的工作目标不同而选择不同的账号和代理ip.处理过程如下:点击选择账号,在js中获取工作目标对工作目标进行两次编码(encodeURI(enco ...
- 解决URL中文乱码问题--对中文进行加密、解密处理
解决URL中文乱码问题--对中文进行加密.解密处理 情景:在资源调度中,首先用户需要选择工作目标,然后跟据选择的工作目标不同而选择不同的账号和代理ip.处理过程如下:点击选择账号,在js中获取工作目标 ...
- 关于使用Tomcat搭建的Web项目,出现 URL 中文乱码的问题解析
URL编码问题 问题描述 使用 Tomcat 开发一个 Java Web 项目的时候,相信大多数人都遇到过url出现中文乱码的情况,绝大多数人为了避免出现这种问题,所以设计 url 一般都会尽量设计成 ...
- java中文乱码解决之道(八)-----解决URL中文乱码问题
我们主要通过两种形式提交向服务器发送请求:URL.表单.而表单形式一般都不会出现乱码问题,乱码问题主要是在URL上面.通过前面几篇博客的介绍我们知道URL向服务器发送请求编码过程实在是实在太混乱了.不 ...
- URL中文乱码处理总结(转)
转自:http://www.cnblogs.com/xirongliu/archive/2012/09/06/2674196.html 问题:传递中文参数的时候,接收页面出现乱码问题?当跨域操作,两套 ...
- [转]Asp.Net url中文乱码
一般有3种方法: 1.设置web.config文件 2.传递中文之前,将要传递的中文参数进行编码,在接收时再进行解码. 传递 string Name = "中文参数"; Resp ...
- 解决使用tomcat服务器发布web项目时出现URL中文乱码的问题
打开Tomcat的安装路径 打开server.xml文件 在修改端口号的一行既是下图中位置添加 URIEncoding="UTF-8" 就能替换在用eclipse或者myeclip ...
- Tomcat中Url中文乱码解决办法
引自:http://thoughtfly.iteye.com/blog/1533481 默认的tomcat容器如果直接使用get方式在url中传中文时,传到后台接收会是乱码. 乱码问题 原因: tom ...
- Tomcat的URL中文乱码解决以及传输优化
默认的tomcat容器如果直接使用get方式在url中传中文时,传到后台接收会是乱码. 乱码问题 原因: tomcat默认的在url传输时是用iso8859-1编码. 解决方案一: 在使用get传输参 ...
随机推荐
- Java学习——包及可见性
1.在同一个类中:创建的对象,不管成员的可见修饰符可以直接调用. package studentpackage; public class Student { public long id; prot ...
- hashMap为啥初始化容量为2的次幂
原文 https://blog.csdn.net/sd_csdn_scy/article/details/57083619hashMap源码获取元素的位置: static int indexFor(i ...
- HDOJ 2003 求绝对值
#include<cstdio> #include<cmath> int main() { double a; while (scanf_s("%lf", ...
- win7颜色反转
win7屏幕太亮,整天看电脑看的头疼 利用放大镜实现颜色反转 打开控制面板 //也可'开始'处直接输入输入放大镜进入 选择轻松访问 启用放大镜 选择设置 启用颜色反转 win+'+'增加放大镜的放大倍 ...
- [UE4]行为树,组合节点:Selector和Sequence
行为树节点 一.Composite组合节点: 1.Selector 要求比较低:只要有一个子节点成功就可以了. 只要子节点有一个返回true,则停止执行其它子节点,并且Selector返回true.如 ...
- c#day05
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ccc ...
- vs2015 编译google v8
转自:http://blog.csdn.net/runningman2012/article/details/54692010 系统Win10 64位,vs2015 1. git 下载depot_to ...
- sas 基础(1)-关于数据格式的SAS函数
(一)字符转换: 1)字符型转换成数值型 Numvar=INPUT(source,informat) 2)数值型转换成字符型 Chavar=PUT(source,format) (二)字符型变量的处理 ...
- C# webbrowser遍历网页元素
//不引用其他单元 foreach(HtmlElement ele in WB1.Document.All) { if(ele.I ...
- kafka的几个简单操作
怎么安装解压kafka这里就不多说了,从配置文件说起 我这里搭建的是三节点集群 master slave1 slave2 修改server.properties 文件 把自己本地安装的zookeep ...