关于URL传递中文参数出现乱码的解决方案

合集下载

php中url地址栏传参数中文乱码解决方法汇总

php中url地址栏传参数中文乱码解决方法汇总
lc_ctype=”zh_cn.utf-8″
lc_numeric=”zh_cn.utf-8″
lc_time=c
lc_collate=c
lc_monetary=”zh_cn.utf-8″
lc_messages=”zh_cn.utf-8″
lc_paper=”zh_cn.utf-8″
lc_name=”zh_cn.utf-8″
使用$gonghui = iconv(“gb2312″,”UTF-8″,$gonghui);另一方法代码
/* 多字节字符串编码转换函数
*
* @param string str 需要进行编码转换的字符串
* @param string to_encoding 指定转换为某种编码,如:gb2312、gbk、utf-8等
mb_convert_encoding 函数为php内部多字节字符串编码转换函数,可以在有需要的使用场合,几乎支持所有编码。PHP >= 4.0.6、 5 版本支持。
直接获取 reg.php?gh=某某;
//工会登入参
$gonghui = $_GET['gh'];
获得的$gonghui 为gb2312编码 输出到utf-8网页上显示乱码
$ChineseName=”我的名字,是中文的哦”;
$EncodeStr=urlencode($ChineseName);
echo “<a href=/cgi/personal.cgi?name=$EncodeStr>我的名字</a>”;
?>
url解码
还原 URL 编码字符串。
语法: string urldecode(string str);

URL地址中的中文乱码问题的解决

URL地址中的中文乱码问题的解决

URL地址中的中⽂乱码问题的解决引⾔:在Restful类的服务设计中,经常会碰到需要在URL地址中使⽤中⽂作为的参数的情况,这种情况下,⼀般都需要正确的设置和编码中⽂字符信息。

乱码问题就此产⽣了,该如何解决呢?且听本⽂详细道来。

1. 问题的引出在Restful的服务设计中,查询某些信息的时候,⼀般的URL地址设计为: get /basic/service? keyword=历史,之类的URL地址。

但是,在实际的开发和使⽤中,确是有乱码情况的发⽣,在后台的读取keyword信息为乱码,⽆法正确读取。

2. 乱码是如何产⽣的?由于我们利⽤URL传递参数这种⽅式是依赖与浏览器环境中的,也就是说URL及URL中包含的各个key=value格式的传递参数键值对参数是在浏览器地址栏中的处理原理处理相应编码后传递⾄后台进⾏解码的。

由于我们没有进⾏任何处理,此时javascript请求URL并传参数存在中⽂时(也就是说输⼊框中输⼊中⽂时),对URL的中⽂参数进⾏编码是按照浏览器机制进⾏编码的。

此时编码存在乱码问题。

3. 初次编码, javascript中利⽤encodeURI()⽅法进⾏编码。

利⽤encodeURI()在javascript中对中⽂URL参数进⾏编码时,“测试”⼆字会被转换为“%E6%B5%8B%E8%AF%95”。

但是问题依然存在。

原因是在编码后的字符串信息,浏览器机制会认为“%”是⼀个转义字符,浏览器会把地址栏URL中的传递的已转换参数“%”与“%”之间的已转义字符进⾏处理传递到后台中。

这样会造成与实际经过encodeURI()编码后的URL不符,因为浏览器误认为“%”是转义字符字符了,它并未将“%”认为是个普通字符。

4. ⼆次编码,使⽤encodeURI操作: encodeURI(encodeURI("/order?name=" + name));处理后的URL不在是通过⼀次 encodeURI()转换后的字符串”%E6%B5%8B%E8%AF%95“,⽽是经过上⼀步两层encodeURI()处理URL处理后的字符串”%25E6%B255%258B%25E8%AF%2595“,通过再次编码原有被浏览起解析为转义字符的”%“被再次编码,转换成了普通字符转”%25“。

中文参数乱码问题解决方案(精选5篇)

中文参数乱码问题解决方案(精选5篇)

中文参数乱码问题解决方案(精选5篇)第一篇:中文参数乱码问题解决方案问题1:在使用tomcat服务器时,如在跳转路径中传递中文参数会出现乱码现向!如:以和两种方式提交的变量flag在LoginServlet中用request.getParameter(“flag”);时就会出现乱码问题。

解决:在tomcat/conf/servlet.Xml中加入一段代码:debug=“0” connectionTimeout=“20000”disableUploadTimeout=“true” URIEncoding=“true”/>问题2:如果uri中转递的是参数要发送到jsp页面,则必须在接受代码的jsp页面里面还要加入代码:问题3:在jsp页面里的代码修正://如不注明是post方式则默认是get方式问题4:在servlet中的代码修正在doPost方法里面最上面的位置加上如下代码:response.setCharacterEncoding(“gb2312”);request.setCharacterEncoding(“gb2312”);第二篇:struts2 action接收到的参数中文乱码的问题struts2 action接收到的参数中文乱码的问题(2011-06-16 10:55:44)转载标签:分类:技术收藏utf-8 乱码 gb2312 字符集编码方法杂谈中文乱码,首先要区分是页面乱码、action乱码,还是数据库乱码。

大致的原理是java使用unicode编码-->window使用gbk(gb2312的扩展集)--mysql默认使用utf-8(unicode的一种编码方法),这样转来转去就乱码了^_^。

解决方法如下:1.在struts2里面,最好将所有字符都设成utf-8。

1.1 在jsp页面设定字符编码。

这边有必有说明的是如果是jsp+java bean+servlet 的方案,中文乱码很好解决,统一设成gb2312就可以了。

Js的Url中传递中文参数乱码,如何获取Url中参数问题

Js的Url中传递中文参数乱码,如何获取Url中参数问题

Js的Url中传递中文参数乱码,如何获取Url中参数问题一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码:1.传参页面Javascript代码:<script type=”text/javascript”>// <![CDATA[function send(){var url = "test01.html";var userName = $("#userName").html();window.open(encodeURI(url + "?userName=" + userName)); }// ]]></script>2. 接收参数页面:test02.html<script>var urlinfo = window.location.href;//獲取urlvar userName = urlinfo.split(“?”)[1].split(“=”)[1];//拆分url得到”=”後面的參數$(“#userName”).html(decodeURI(userName));</script>二:如何获取Url“?”后,“=”的参数值:A.首先用window.location.href获取到全部url值。

B.用split截取“?”后的全部C.split(“?”)后面的[1]内数字,默认从0开始计算三:Js中escape,unescape,encodeURI,encodeURIComponent区别:1.传递参数时候使用,encodeURIComponent否则url中很容易被”#”,”?”,”&”等敏感符号隔断。

2.url跳转时候使用,编码用encodeURI,解码用decodeURI。

3.escape() 只是为0-255以外ASCII字符做转换工作,转换成的 %u**** 这样的码,如果要用更多的字符如 UTF-8字符库就一定要用encodeURIComponent() 或encodeURI() 转换才可以成%nn%nn 这的码才可以,其它情况下escape,encodeURI,encodeURIComponent编码结果相同,所以为了全球的统一化进程,在用 encodeURIComponent() 或 encodeURI() 代替 escape() 使用吧!可以任意转载, 转载时请务必以超链接形式标明文章原始出处及此声明本文地址:。

URL地址含有中文参数的解决办法

URL地址含有中文参数的解决办法

URL地址含有中文参数的解决办法URL地址中含有中文字符是很麻烦的,前面描述过使用GET方法提交表单的情况,使用GET方法时,参数就是包含在URL中。

1.URL编码对于URL中的一些特殊字符,浏览器会自动进行编码。

这些字符除了"/?&"等外,还包括unicode字符,比如汉子。

这时的编码比较特殊。

IE有一个选项"总是使用UTF- 8发送URL",当该选项有效时,IE 将会对特殊字符进行UTF-8编码,同时进行URL编码。

如果该选项无效,则使用默认编码"GBK",并且不进行 URL编码。

但是,对于URL后面的参数,则总是不进行编码,相当于UTF-8选项无效。

比如"中文.html?a=中文",当UTF-8选项有效时,将发送链接"%e4%b8%ad%e6%96%87.html?a=/x4e/x2d/x65/x87";而UTF-8选项无效时,将发送链接"/x4e/x2d/x65/x87.html?a=/x4e/x2d/x65/x87"。

在此注意,不管此选项是否有勾选,后面的参数都没有改变,改变的仅仅是地址当web server(tomcat)接收到该链接时,将会进行URL解码,即去掉"%",同时按照ISO8859-1编码(上面已经描述,可以使用URLEncoding来设置成其它编码)识别。

上述例子的结果分别是"/ue4/ub8/uad/ue6/u96/u87.html?a=/u4e/u2d/u65/u87"和"/u4e/u2d/u65/u87.html?a=/u4e/u2d/u65/u87",注意前者前面的"中文"两个字恢复成了6个字符。

这里用"/u",表示是unicode。

所以,由于客户端设置的不同,相同的链接,在服务器上得到了不同结果。

url中文乱码解决大全

url中文乱码解决大全

使用tomcat 时,相信大家都回遇到中文乱码的问题,具体表现为通过表单取得的中文数据为乱码。

一、初级解决方法通过一番检索后,许多人采用了如下办法,首先对取得字符串按照iso8859-1 进行解码转换,然后再按照gb2312 进行编码,最后得到正确的内容。

示例代码如下:http://xxx.do?ptname='我是中国人'String strPtname = request.getParameter("ptname");strPtname = new String(strPtname.getBytes("ISO-8859-1"), "UTF-8"); String para = newString( request.getParameter("para").getBytes("iso8859-1"),"gb2312");具体的原因是因为美国人在写tomcat 时默认使用iso8859-1 进行编码造成的。

然而,在我们的servlet 和jsp 页面中有大量的参数需要进行传递,这样转换的话会带来大量的转换代码,非常不便。

二、入门级解决方法后来,大家开始写一个过滤器,在取得客户端传过来的参数之前,通过过滤器首先将取得的参数编码设定为gb2312 ,然后就可以直接使用getParameter 取得正确的参数了。

这个过滤器在tomcat 的示例代码jsp-examples 中有详细的使用示例, 其中过滤器在web.xml 中的设定如下,示例中使用的是日文的编码,我们只要修改为gb2312 即可<filter>1.<filter-name>Set Character Encoding</filter-name>2.<filter-class>filters.SetCharacterEncodingFilter</filter-class>3.<init-param>4.<param-name>encoding</param-name>5.<param-value>EUC_JP</param-value>6.</init-param>7.</filter>过滤器的代码如下:public class SetCharacterEncodingFilter implements Filter {1.// 编码的字符串2.protected String encoding = null;3.// 过滤器的配置4.protected FilterConfig filterConfig = null;5.// 是否忽略客户端的编码6.protected boolean ignore = true;7.// 销毁过滤器8.public void destroy() {9.this.encoding = null;10.this.filterConfig = null;11.}12.// 过滤方法13.public void doFilter(ServletRequest request, ServletResponseresponse,14.FilterChain chain)15.throws IOException, ServletException {16.// 如果使用过滤器,忽略客户端的编码,那么使用通过过滤器设定编码17.if (ignore || (request.getCharacterEncoding() == null)) {18.String encoding = selectEncoding(request);19.if (encoding != null)20.request.setCharacterEncoding(encoding);21.}22.// 传送给下一个过滤器23.chain.doFilter(request, response);24.}25.// 初始化过滤器26.public void init(FilterConfigfilterConfig) throws ServletException {27.this.filterConfig = filterConfig;28.this.encoding = filterConfig.getInitParameter("encoding");29.String value = filterConfig.getInitParameter("ignore");30.if (value == null)31.this.ignore = true;32.else if (value.equalsIgnoreCase("true"))33.this.ignore = true;34.else if (value.equalsIgnoreCase("yes"))35.this.ignore = true;36.else37.this.ignore = false;38.}39.// 返回过滤器设定的编码40.protected String selectEncoding(ServletRequest request) {41.return (this.encoding);42.}43.}然而在 tomcat5 中,即使使用过滤器,仍然可能取得乱码,原因何在呢?三、高级解决方法这是因为,在 tomcat4 和 tomcat5 中对参数的处理是不一样的,在 tomcat4 中get 与 post 的编码是一样的,所以只要在过滤器中通过request.setCharacterEncoding 设定一次就可以解决 get 与 post 的问题。

jspurl中中文参数的乱码解决

jspurl中中文参数的乱码解决

jspurl中中文参数的乱码解决form有2中方法把数据提交给服务器,get和post,分别说下吧。

(一)get提交1.首先说下客户端(浏览器)的form表单用get方法是如何将数据编码后提交给服务器端的吧。

对于get方法来说,都是把数据串联在请求的url后面作为参数,如:http://localhost:8080/servlet?msg=abc(很常见的一个乱码问题就要出现了,如果url中出现中文或其它特殊字符的话,如:http://localhost:8080/servlet?msg=杭州,服务器端容易得到乱码),url拼接完成后,浏览器会对url进行URL encode,然后发送给服务器,URL encode的过程就是把部分url做为字符,按照某种编码方式(如:utf-8,gbk等)编码成二进制的字节码,然后每个字节用一个包含3个字符的字符串"%xy" 表示,其中xy 为该字节的两位十六进制表示形式。

我这里说的可能不清楚,具体介绍可以看下/doc/cb13442591.html,.URLEncoder类的介绍在这里。

了解了URL encode的过程,我们能看到2个很重要的问题,第一:需要URL encode的字符一般都是非ASCII的字符(笼统的讲),再通俗的讲就是除了英文字母以外的文字(如:中文,日文等)都要进行URL encode,所以对于我们来说,都是英文字母的url不会出现服务器得到乱码问题,出现乱码都是url里面带了中文或特殊字符造成的;第二:URL encode到底按照那种编码方式对字符编码?这里就是浏览器的事情了,而且不同的浏览器有不同的做法,中文版的浏览器一般会默认的使用GBK,通过设置浏览器也可以使用UTF-8,可能不同的用户就有不同的浏览器设置,也就造成不同的编码方式,所以很多网站的做法都是先把url里面的中文或特殊字符用javascript做URL encode,然后再拼接url提交数据,也就是替浏览器做了URL encode,好处就是网站可以统一get方法提交数据的编码方式。

phpurl地址栏传中文乱码解决方法集合

phpurl地址栏传中文乱码解决方法集合

phpurl地址栏传中⽂乱码解决⽅法集合url编码语法: string urlencode(string str);返回值: 字符串函数种类: 编码处理例如:复制代码代码如下:<?php$ChineseName="我的名字,是中⽂的哦";$EncodeStr=urlencode($ChineseName);echo "<a href=/cgi/personal.cgi?name=$EncodeStr>我的名字</a>";>url解码还原 URL 编码字符串。

语法: string urldecode(string str);返回值: 字符串函数种类: 编码处理例如:对前⾯传过来的中⽂进⾏处理显⽰复制代码代码如下:<?php$DecodeStr=urldecode($_GET['name']);//你可能不⽤解码都可以,因为浏览器会⾃动帮你解码echo $DecodeStr;>使⽤$gonghui = iconv("gb2312","UTF-8",$gonghui);另⼀⽅法代码/*** 多字节字符串编码转换函数** @param string str 需要进⾏编码转换的字符串* @param string to_encoding 指定转换为某种编码,如:gb2312、gbk、utf-8等* @param mixed from_encoding 混合指定原来字串的编码,如:同时指定 JIS, eucjp-win, sjis-win 混合编码* @return stringstring mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )**/mb_convert_encoding 函数为php内部多字节字符串编码转换函数,可以在有需要的使⽤场合,⼏乎⽀持所有编码。

url传递中文参数乱码问题的终极解决方法。

url传递中文参数乱码问题的终极解决方法。

url传递中⽂参数乱码问题的终极解决⽅法。

估计很多⼈在做web开发的时候,都会碰到过url传递中⽂参数,有时候会出现乱码的问题,但有些项⽬或者环境,⼜不会有问题。

当遇到乱码的时候,上⽹找了很多解决⽅案,⽐如:1. 页⾯设置它的编码⽅式,改成utf-8 或者gb2312。

2. encodeURI(url),也有⼈说要2个encodeURI,如:window.location.href = encodeURI('b.html?cId='+id+"&cName="+encodeURIComponent(name));然后后台String str = .URLDecoder.decode(str, "UTF-8");这样进⾏转码等。

解决⽅法就不⼀⼀列举了,⼤家可⾃⾏百度搜索,我也搞不清楚究竟怎么能保证百分百解决问题。

项⽬中碰到的情况是,开发环境经过上述的2种⽅法,折腾过,确实能定位某个编码转换是正常的。

但部署到测试环境调试输出后发现,⽆论是gbk,utf8,iso等等编码测试,都⽆法正常还原中⽂字符串。

于是想到了另外⼀种⽅法,就是把中⽂转换为数字或者是英⽂字母以及标点符号等组成的字符串传递到后台,因此有想法是把字符串加密为base64的⽅式传过去后,再后台再进⾏解密。

上⽹找了下,没找到现成的有效⽅法,于是放弃了。

再后来,想着不需要加密了,直接把字符串转换成16进制传递到后台,再把它转回来吧,于是,这个终极的解决⽅案就出来了。

⾸先是jsp页⾯中增加脚本,把字符串转换成16进制字符串,字符之间⽤,号隔开,不隔开,⽆法区分出哪个是半⾓哪个是全⾓(如果不⽤,号隔开的,⿇烦请提供个好的解决⽅法,谢谢)function stringToHex(str){var val="";for(var i = 0; i < str.length; i++){if(val == "")val = str.charCodeAt(i).toString(16);elseval += "," + str.charCodeAt(i).toString(16);}return val;}页⾯上把字符串经过该函数转换后,传递到后台,如:var code_value=stringToHex(PrjName);var url= "/assets/fmProjectInfo.do?method=synCheckProjectName&prjName="+code_value+"&typeId=<bean:writename="fmProjectInfoForm" property="bo.ftId"/>"后台的转换代码为:public static String decode(String unicodeStr) {if (unicodeStr == null) {return null;}StringBuffer retBuf = new StringBuffer();int maxLoop = unicodeStr.length();for (int i = 0; i < maxLoop; i++) {if (unicodeStr.charAt(i) == '\\') {if ((i < maxLoop - 5)&& ((unicodeStr.charAt(i + 1) == 'u') || (unicodeStr.charAt(i + 1) == 'U')))try {retBuf.append((char) Integer.parseInt(unicodeStr.substring(i + 2, i + 6), 16));i += 5;} catch (NumberFormatException localNumberFormatException) {retBuf.append(unicodeStr.charAt(i));}elseretBuf.append(unicodeStr.charAt(i));} else {retBuf.append(unicodeStr.charAt(i));}}return retBuf.toString();}//把jsp页⾯传递进来的,⽤,号隔开的16进制字符串转换成类似:select \u7528\u6237\u540d from \u7528\u6237 的字符串,在调⽤decode⽅法把中⽂转换出来。

Java Web项目开发中的中文乱码问题与对策

Java Web项目开发中的中文乱码问题与对策

Java Web项目开发中的中文乱码问题与对策在Java Web项目开发过程中,中文乱码问题是一个常见的挑战。

乱码问题通常发生在将中文数据存储到数据库、从数据库读取中文数据、在页面上展示中文数据等环节,如果不正确处理乱码问题,会导致用户无法正常阅读中文内容,影响用户体验。

下面介绍一些常见的中文乱码问题和对策。

1. 数据库乱码:当将中文数据存储到数据库中时,如果数据库的字符集不是UTF-8,会导致乱码问题。

解决方法是将数据库字符集设置为UTF-8,确保中文数据能够正确存储和读取。

2. 请求参数乱码:当用户提交包含中文字符的表单时,请求参数中的中文字符可能会出现乱码问题。

解决方法是在服务器端统一设置请求参数的编码为UTF-8,可以通过在web.xml文件中添加如下配置实现:```xml<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-c lass><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>``````html<meta charset="UTF-8">```4. 文件编码乱码:如果在Java Web项目中读取外部的文本文件,文件的编码可能与项目编码不一致,导致读取中文内容乱码。

javaURL传递中文参数乱码解析

javaURL传递中文参数乱码解析

javaURL传递中文参数乱码解析一从后台Action中往前台页面传递中文:今天遇到一个问题就是在Action当中把一条中文信息绑定在URL 的后面,ActionForward到别一个页面时,用reqeust.getParameter 取出是出现乱码的问题。

现解决办法如下:1、对要进行URL传递的中文字符进行编码:String message = /doc/8a7663808.html,.URLEncoder.encode("中文字符","utf-8");2、在取URL传递中文的页面对字符进行解码:String msg = request.getParameter("message");String str=new String(msg.getBytes("ISO-8859-1"),"UTF-8");--------------------------------------------------------------------------------------注 1、这里得出的str就是先前传入的"中文字符"。

2、为什么要对取出的字符集形式转换成UTF-8形式,是因为ISO-8859-1是Java中网络传输使用的标准字符集,request.getParameter("message");得到的还是ISO-8859-1字符集,所以要转换一下。

############################################# ################################################ ################################################ #二从前台页面用URL网后台Action中传递中文参数:这里提供一个解决方案,基本原理就是在JS中将中文转码成URI 方式,如下:var queryTitle = document.getElementById('queryTitle').value;queryTitle=encodeURI(queryTitle);queryTitle=encodeURI(queryTitle); 需要转2次这个不知道那个脑残设计的,靠然后在后台获取的时候,解码URI:String newTitle = request.getParameter("newTitle");newTitle = /doc/8a7663808.html,.URLDecoder.decod e(newTitle, "utf-8");这样就可以了即:在客户端进行再次encodeURI操作,在服务器解码即可。

url传值中文乱码解析

url传值中文乱码解析

url传值中文乱码解析URL 传递中文参数时出现乱码,通常是因为字符编码的问题。

以下是几种常见的解决方式:1. URL 编码:当在 URL 中传递中文参数时,需要对参数进行 URL 编码。

URL 编码是一种将字符转换为可以在 URL 中传输的格式的方式。

对于中文,通常使用 UTF-8 编码,然后再进行 URL 编码。

```pythonimportparams = {"name": "张三"}params["name"] = (params["name"])url = " + (params)print(url) 输出:```2. 服务器端解码:当服务器接收到 URL 参数时,需要对其进行解码。

解码的方式与编码的方式相反。

```pythonimport假设 GET 请求的参数是 "name=%E5%BC%A0%E4%B8%80"query_string = "name=%E5%BC%A0%E4%B8%80"params = (query_string) 解码print(params) 输出:张三```3. 确保整个请求和响应都在同一个字符集下:确保整个请求(URL、请求头等)和响应(返回的内容)都在同一个字符集下。

如果字符集不一致,可能会导致乱码问题。

例如,如果服务器返回的是UTF-8 编码的内容,但客户端期望接收的是其他编码的内容,那么可能会出现乱码。

确保两端都明确知道并使用相同的字符集。

4. 检查浏览器或客户端的字符集设置:有时候浏览器或客户端可能默认使用了其他的字符集。

可以通过查看浏览器的设置或发送特定的响应头来指定正确的字符集。

例如,发送 `Content-Type: text/html; charset=UTF-8` 可以告诉浏览器内容是 UTF-8 编码的。

url地址传参中文乱码处理

url地址传参中文乱码处理
这种方式需要注意的是,在使用encodeURI转码后,会出现特殊字符,这时候,就需要将特殊字符也转码,所以使用两次encodeURI,即:encodeURI(encodeURI(“xxxx”))。
1.将字符串转码:new String(“xxxxx”.getBytes("iso-8859-1"),"utf-8")
这种转码方式有很大的弊端,因为它是使用指定的字符集将此String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中,然后通过使用指定的字符编码将生成的byte 数组解码,构造一个新的String字符串。这种情况就有可能遇到的情况是,不能将一个汉字全部解码完。这样,前边的都能正常显示,但是最后一个字可能是乱码。所以不建议使用这种方式。
这种方式需要注意的是,在使用encode转码后,会出现特殊字符,这时候,就需要将特殊字符替换为相应的16进制。因为特殊字符在url路径中做为参数传递时,也是乱码。
第二种:
传参前:encodeURI(“xxxx”) 。
接收参数后:使用.URLDncoder.decode("xxxx",“utf-8")将16进制字符转为中文。
2.在传参种:
第一种:
传参前:使用.URLEncoder.encode("xxxx",“utf-8"),将中文转为16进制字符。
接收参数后:使用.URLDncoder.decode("xxxx",“utf-8")将16进制字符转为中文。

php中url地址栏传参数中文乱码解决方法汇总

php中url地址栏传参数中文乱码解决方法汇总

php中url地址栏传参数中文乱码解决方法汇总在PHP中,URL地址栏传递参数时可能会出现中文乱码的问题。

这是因为URL是一种只支持ASCII字符的编码方式,不支持直接传递中文字符。

为了解决这个问题,我们可以使用以下方法:1. 使用 urlencode 和 urldecode 函数:- 在发送请求时,可以使用 `urlencode` 函数对参数进行编码,将中文字符转换为 URL 编码格式(%E4%BD%A0%E5%A5%BD)。

- 在接收请求时,可以使用 `urldecode` 函数对编码后的参数进行解码,将 URL 编码格式还原为中文字符。

2. 使用 rawurlencode 和 rawurldecode 函数:- `rawurlencode` 和 `rawurldecode` 函数与 `urlencode` 和`urldecode` 函数类似,但它们对字符进行更严格的编码和解码,确保特殊字符不会被转义。

3. 使用 base64_encode 和 base64_decode 函数:- 在发送请求时,可以使用 `base64_encode` 函数对参数进行编码,将参数转换为 Base64 编码格式。

- 在接收请求时,可以使用 `base64_decode` 函数对编码后的参数进行解码,将 Base64 编码格式还原为原始参数。

4. 使用 iconv 函数进行字符编码转换:- 在发送请求时,可以使用 `iconv` 函数将参数从当前字符编码(如 UTF-8)转换为其他字符编码(如 GBK)。

- 在接收请求时,可以使用 `iconv` 函数将参数从其他字符编码转换为当前字符编码。

5.在HTML中使用表单提交方式:- 如果参数是通过表单提交的,可以在 HTML 表单上使用 `accept-charset` 属性来指定表单中参数的字符编码(如 UTF-8),确保参数在传递过程中不会出现乱码。

6.使用$_GET和$_POST变量:-如果参数是通过HTTPGET或POST方法传递的,可以直接使用PHP中的`$_GET`或`$_POST`变量来获取参数值,PHP会自动处理编码问题。

get请求中url传参中文乱码问题

get请求中url传参中文乱码问题

get请求中url传参中⽂乱码问题在项⽬中经常会遇到中⽂传参数,在后台接收到乱码问题。

那么在遇到这种情况下我们应该怎么进⾏处理让我们传到后台接收到的参数不是乱码是我们想要接收的到的,下⾯就是我的⼀些认识和理解。

⼀:get请求url中带有中⽂参数,有三种⽅式进⾏处理防⽌中⽂乱码1、如果使⽤tomcat作为服务器,那么修改tomcat配置⽂件conf/server.xml中,在 <Connector port="8082" protocol="HTTP/1.1" 中加⼊ URIEncoding="utf-8"的编码集2、前台需要对中⽂参数进⾏编码,调⽤js⽅法encodeURI(url),将url编码,然后请求。

后台接受时,需处理String str = new String(request.getParameter("param").getBytes("iso8859-1"),"UTF-8");原因:tomcat不设置编码时,默认是iso8859-1,即tomcat默认会以iso8859-1编码接收get参数。

以上操作是将参数以iso8859-1编码转化为字节数组,然后再以UTF-8将字节数组转化为字符串。

另外需注意在框架的使⽤中:request.setCharacterEncoding(encoding);只对post请求有效。

⽽且,spring的CharacterEncodingFilter也只是做了request(和response).setCharacterEncoding(encoding);的操作。

所以spring的filter配置不作⽤于get参数接收。

3、解决get请求,后台接受中⽂参数乱码处理的⽅法(搜索功能带参数)(1)前台获取数据,在js中进⾏编码处理encodeURI函数采⽤utf-8进⾏编码,⽽在服务器的进⾏解码时候,默认都不是以uft-8进⾏解码,所以就会出现乱码。

url传中文解决方案

url传中文解决方案

url传中文解决方案
在URL中使用中文字符是一种常见的需求,但是由于URL规范的限制,直接在URL中使用中文字符可能会导致一些问题,例如乱码、识别不准确等。

为了解决这些问题,可以采用以下几种方案:
1.URL编码
URL编码是将URL中的非ASCII字符转换为%加上其对应的十六进制
值的形式。

对于中文字符来说,可以使用UTF-8编码将其转换为URL安全
的形式。

下面是一个例子:
在编码后的URL中,中文字符“你好”被转换为
“%E4%BD%A0%E5%A5%BD”。

2.链接短网址
短网址服务可以将较长的URL转换为短的URL形式,同时可以解决URL中包含中文字符的问题。

短网址服务一般会将URL编码后进行转换,
这样就能够有效地处理中文字符。

用户在使用这样的短网址时,会被重定
向到原始URL。

3.二级域名转换
在这个转换后的URL中,中文字符被转换为了符合URL规范的ASCII
字符。

4.嵌入唯一标识符
这个唯一标识符可以是一个数字、字符串或者其他形式,只要能够唯
一标识出相应的资源即可。

总结起来,URL中包含中文字符的解决方案可以通过URL编码、链接短网址、二级域名转换和嵌入唯一标识符等方式来实现。

根据实际需求和技术限制,选择合适的解决方案来解决中文字符在URL中带来的问题。

中文参数乱码问题解决方案

中文参数乱码问题解决方案

问题1:在使用tomcat服务器时,如在跳转路径中传递中文参数会出现乱码现向!如:以<a href=”servlet/LoginServlet?flag=测试”>和<form name=”form1” action =”servlet/LoginServlet?flag=”测试” method=“post”>两种方式提交的变量flag在LoginServlet中用request.getParameter(“flag”);时就会出现乱码问题。

解决:在tomcat/conf/servlet.Xml中加入一段代码:<Connector port="8090" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443" acceptCount="100"debug="0" connectionTimeout="20000"disableUploadTimeout="true"URIEncoding="true"/>问题2:如果uri中转递的是参数要发送到jsp页面,则必须在接受代码的jsp页面里面还要加入代码: <% request.setCharacterEncoding("gb2312");%>问题3:在jsp页面里的代码修正:<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <%@ page contentType="gb2312"%><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>无标题文档</title></head><body><form name=”form1” action =”***”methoed=”post”>//如不注明是post方式则默认是get方式<body>问题4:在servlet中的代码修正在doPost方法里面最上面的位置加上如下代码:response.setCharacterEncoding("gb2312");request.setCharacterEncoding("gb2312");。

URL传递中文参数乱码问题

URL传递中文参数乱码问题

URL传递中文参数乱码问题Jsp页面使用URL编码传递中文参数的情况下,在参数的解析过程中会出现乱码。

由于java在设计的时候考虑到了国际化的问题,在java源程序编译成字节码的时候默认使用的是UTF-8编码。

而在web 运用上,由于不同的浏览器向服务器发送的信息采用的编码方式不同,在由像tomcat之类的服务器解码的时候会由于编码方式的不同而产生乱码,这是一个会困扰jsp初学者很久的问题。

以前在使用struts的时候不需要处理这些问题,前些天在做一个简单的jsp页面的时候碰到这个问题。

经过半天的摸索,基本解决了该问题。

例子中a.jsp页面通过URL编码的方式传递中文参数,在b.jsp中对该参数进行解析。

a.jsp源代码<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title></head><body><%String str_test = "华工";%><form method=post action="b.jsp?test=<%=.URLEncoder.encode(str_test) %>"><input type="submit" value="Submit" name="提交"></form></body></html>b.jsp源代码<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title></head><body><%String str = new String(request.getParameter("test").getBytes("ISO8859_1"));%><BR><%=str %></body></html>说明:在使用了.URLEncoder.encode 编码后,页面获取参数request.getParameter后需要使用ISO8859_1编码转换。

URL乱码问题解决

URL乱码问题解决

打开tomcat/conf/server.xml查找下面这部分,在最后增加一段代码就可以了。

<Connector port="80" maxHttpHeaderSize="8192".................URIEncoding="GBK"useBodyEncodingForURI="true".............../>. 概述本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等。

在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4 ",Unicode编码为"4e2d 6587 ",UTF编码就是"e4b8ad e69687 "。

注意,这两个字没有iso8859-1编码,但可以用iso8859-1编码来"表示"。

2. 编码基本知识最早的编码是iso8859-1,和ascii编码相似。

但为了方便表示各种各样的语言,逐渐出现了很多标准编码,重要的有如下几个。

2.1. iso8859-1属于单字节编码,最多能表示的字符范围是0-255,应用于英文系列。

比如,字母'a'的编码为0x61=97。

很明显,iso8859-1编码表示的字符范围很窄,无法表示中文字符。

但是,由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍旧使用iso8859-1编码来表示。

而且在很多协议上,默认使用该编码。

比如,虽然"中文"两个字不存在iso8859-1编码,以gb2312编码为例,应该是"d6d0 cec4 "两个字符,使用iso8859-1编码的时候则将它拆开为4个字节来表示:"d6 d0 ce c4 "(事实上,在进行存储的时候,也是以字节为单位处理的)。

c#.neturl带中文参数显示乱码的问题

c#.neturl带中文参数显示乱码的问题

c#.neturl带中文参数显示乱码的问题最近要上个项目,其实很简单的东西,就是拼接一个url,不过url中的参数需要UrlEncode编码的,其实对我来说,这个问题很好解决,C#用HttpUtility.UrlEncode来进行编码,asp用Server.UrlEncode来进行编码。

问题解决了吗?问题刚刚开始因为这个公用转向文件,是针对所有分站的,分站代码有.net和asp两种,文件编码格式也不一样。

头大的事情开始了。

asp站的文件编码是gb2312,虽然.net的文件格式也是gb2312,但因为webconfig里设置的 requestEncoding 是utf8的,所以在接收中文的时候,无论你UrlDeCode怎么解码,哪怕你指定用gb2312解码,出来的还是乱码,那这时候你会说改下webconfig文件呀,不错!如果是你自己的小项目,这样的改动或许不算什么,可如果牵涉到很多项目,在你没办法改的情况下怎么办呢先看看例子吧:环境:asp:文件名:test.asp 文件编码:gb2312.net:文件名:test.aspx,test.aspx.cs 文件编码:gb2312.net:文件名:go.aspx, go.aspx.cs文件编码:gb2312test.asp 代码:<%str = Server.UrlEncode("中文测试")Response.Redirect "go.aspx?name=" & str%>test.aspx.cs代码:string str = HttpUtility.UrlEncode("中文测试");Response.Redirect("go.aspx?name=" + str);go.aspx.cs代码:string name = HttpUtility.UrlDeCode(Request["name"], Encoding.GetEncoding("gb2312"));Response.Redirect("?name=" + HttpUtility.UrlEncode(name));其实在go.aspx.cs中,大家以为编码定到gb2312,应该会正常了,其实错了,我跟踪了一下,在Request["name"]的时候,已经解码,解码的是按照webconfig设置的,那就是utf8。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关于URL传递中文参数出现乱码的解决方案刚毕业参加工作,目前在学习一个管理系统,包括了对数据库信息的各种操作、显示功能。

1. 在实现了数据库信息在JSP页面中的显示后,需要进行某条记录的修改,需要打开一个悬浮窗口,<input type=”text”>中value用来显示获取的信息,作为初始值。

继而<input>输入修改的信息,并把信息更改到数据库当中。

如图所示:
<script>
……
msg=msg+"&r2"="+"赵一";
……
var url="xiugai.jsp?"+msg; //msg中包含中文参数
url=encodeURI(encodeURI(url));//因为msg包含中文参数,所以要对此编码
top.Dialog.open({URL:url,Width:260,Height:300,Title:"数据修改",Modal:true});
</script>
在xiugai.jsp文件中,我们需要在<body>中添加这样一段程序,才能解码中文参数。

并在table表单中如此编写
就能正常显示。

此中最为关键的就是
和,
这就是所谓的编码和解码过程。

至于为什么在JS中要进行2次编码,我还没有弄明白。

但经验证明这是对的。

2.当表单页有中文输入时,它所action到的jsp文件在通过
String X=request.getParameter(“X”)时,获得的X的中文为乱码显示。

就需要 X=new String(X.getBytes(“iso-8859-1”),”UTF-8”); 这个程序就能解决这个乱码问题。

当然上面书写为UTF-8,是因为我习惯把JSP页面编码方式设为UTF-8。

习惯gb2312的朋友也可把它设为gb2312。

以上是我近期学习所取得的一些经验,还有许多不足。

欢迎志同道合者、高手加以改进,欢迎与我交流,可在我的百度空间留言,是我改
正不足,不误导大众。

相关文档
最新文档