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“。

c#或jsurl传参中文乱码解决方案

c#或jsurl传参中文乱码解决方案
网络错误503请刷新页面重试持续报错请尝试更换浏览器或网络环境
c#或 jsБайду номын сангаасrl传参中文乱码解决方案
c#或js url传参中文乱码解决方案 (2009-01-20 10:52:58)
c#; 当我们用url传参是,比如index.aspx?id=我,当参数值为汉字时,经常会遇到乱码的情况,现总结一下有一下这几种解决方法: 1.配置文件web.config中 在节中加上整个网站的编码方式,代码如下: 查看代码.doc 这样参数就以gb2312的中文编码方式传输了。而一般默认是utf-8. 2.在传参是先编码在传输,接受时先编码,在接收。 string mm=Server.URLEncode(你); Response.Redirect(index.aspx?mm=+mm); 然后在接收页解码: string mm = Server.URLDecode(Requext.querystring(mm)); js: 传参:用encodeURI("url参数")将url编码 收参:用decodeURI("接收到的值")解码

中文参数乱码问题解决方案(精选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就可以了。

JAVA WEB中中文乱码问题汇总

JAVA WEB中中文乱码问题汇总

java web中中文乱码问题汇总1,jsp页面中文乱码解决办法:文件头部定义指定页面显示编码<%@page language="java"import="java.util.*"contentType="text/html;charset=GB2312"%>2,URL传递参数中文乱码解决方法:修改Tomcat服务器的配置文件Tomcat的conf目录下的server.xml配置文件,具体改后的代码如下[html]<Connector port="8080"protocol="HTTP/1.1"URIEncoding="gb2312"3,提交表单的中文乱码解决方法:Tomcat中对于post方法提交的表单采用的默认编码为ISO-8859-1,而这种编码格式不支持中文字符。

对于这个问题可以采用转换编码格式的方法来解决String param=request.getParameter("param");//获取参数out.println("中文参数:"+newString(param.getBytes("ISO-8859-1"),"gb2312");4,采用PrintWriter方式输出中文乱码解决方法:PrintWriter自身并没有处理编码的职责,它还是应该看成一个装饰器比较好:它就是为了输出更方便而设计的,提供print、println、printf等便利方法。

在servlet中输出中文,如果采用PrintWriter方式,需要在调用getPrintWriter()之前调用setContentType或者setCharacterEncodingresponse.setContentType("text/html;charset=utf-8"); response.setCharacterEncoding("utf-8");5,ajax中文乱码解决方法:ajax的中文问题已全部解决,从最初的jsp页面看过来,中文就是一个编码方式的问题,出现乱码的原因大部分是在错误的时间,错误的地点进行了编码的操作,且编码的类型一会儿GBK,一会儿GB2312,一会儿UTF-8,当然数据会乱掉了。

中文乱码——精选推荐

中文乱码——精选推荐

中⽂乱码出现中⽂乱码的原因,总结起来就是因为页⾯编码不⼀致的问题。

常见的就是gb2312编码页⾯和utf8编码页⾯的中⽂数据传输。

解决思路:对中⽂数据进⾏编码或加密成为字母+数字的密⽂,在接收页⾯再进⾏解码或解密,因为字母和数字没有乱码的困扰,这样就避免了中⽂乱码的问题。

常见的是使⽤开发平台⾃带的编码/解码、加密/解密函数,也可以引⼊外来的函数。

如aes对称加密函数等等。

1.Aspx页⾯中,Url链接有中⽂乱码解决办法,对中⽂部分进⾏编码,这样就不会有编码问题导致的乱码了。

假设Url的部分参数,Title=我是中⽂ Server.UrlEncode(Title) ⽤来编码的 Server.UrlDecode(Request.QueryString["Title"]) ⽤来解码的<!-- 对Title参数进⾏编码 --><a href="/Product/ProductPhotoDes.aspx?FPrice=0&TPrice=100&Title=<%=Server.UrlEncode("0元-100元") %>">0元-100元</a><!-- 对获取的Title参数进⾏解码 -->m_SecondName =Server.UrlDecode( Request.QueryString["Title"]);2.javascript中⽂参数乱码 假设Url的部分参数,Title=我是中⽂ escape(Title) javascript⽤来编码的 unescape(Title) javascript⽤来解码的 context.Server.UrlDecode(context.Request.QueryString["Title"]) Ashx⽤来解码的3.javascript的3个编码函数 escape/unescape 除了ASCII 字母、数字和特定的符号外,对传进来的字符串全部进⾏转义编码; 因此如果想对URL编码,最好不要使⽤此⽅法; escape()适合对url的参数进⾏编码。

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方法提交数据的编码方式。

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⽅法把中⽂转换出来。

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会自动处理编码问题。

中文乱码问题解决方法

中文乱码问题解决方法

在Jsp文件问题时,中文乱码现象经常遇到,现将处理方法总结一下,供大家参考:(在各种编码方案中,UTF-8、GBK、GB2312都是支持中文显示的。

只是GBK比GB2312支持跟多的字符)一、JSP页面显示乱码Jsp文件页面显示乱码,这种情况比较好处理,在页面的Page指令加上如下一项就OK了:<%@ page contentType="text/html; charset=gb2312"%>注:如果是HTML页面显示乱码,则加上:<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 二、URL传递参数中文乱码当我们把一段中文字符作为参数传递个另一页面时,也会出现乱码情况,解决方法一如下:在参数传递时对参数编码,比如RearshRes.jsp?keywords=" + .URLEncoder.encode(keywords) 然后在接收参数页面使用如下语句接收keywords=newString(request.getParameter("keywords").getBytes("ISO-8859-1"),"UTF-8") ;解决方法二:修改tomcat的server.xml文件中URIEncoding。

<Connectordebug="0"acceptCount="100"connectionTimeout="20000"disableUploadTimeout="true"port="80"redirectPort="8443"enableLookups="false"minSpareThreads="25"maxSpareThreads="75"maxThreads="150"maxPostSize="0"URIEncoding="GBK"></Connector>这个方法主要针对从url中获取字符串的问题。

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中带来的问题。

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 "(事实上,在进行存储的时候,也是以字节为单位处理的)。

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进⾏解码,所以就会出现乱码。

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() 使用吧!可以任意转载, 转载时请务必以超链接形式标明文章原始出处及此声明本文地址:。

JSP对URL链接中的中文乱码处理方法总结

JSP对URL链接中的中文乱码处理方法总结

JSP对URL链接中的中⽂乱码处理⽅法总结IE缺省对URL后⾯的参数是不编码发送的,但是Tomat缺省是按ISO8859-1来进⾏URL编码的,因此才会出错。

⽅法⼀:对URL链接进⾏⼆次编码:<a onclick="javascript:window.open(encodeURI(encodeURI('./DispatchAction.do?efFormEname=FKRY0001&code_type=中⽂参数')))">测试</a>或者单独对参数进⾏⼆次编码:var code_type = "中⽂参数";code_type = encodeURI(code_type);code_type = encodeURI(code_type);window.open("./DispatchAction.do?efFormEname=FKRY0001&code_type="+code_type);Service:String code_type = request.getParameter("code_type");//这句话⼀定要写,因为如果不写的话编码就是%E5%A6%88%code_type = .URLDecoder.decode(code_type,"UTF-8");有⼈提出为什么要在客户端对字符串重复编码两次呢?如果因为项⽬需要,不能指定容器使⽤何种编码规则来解码提交的参数,⽐如:需要接收来⾃不同页⾯,不地编码的参数内容时。

(⼜或者是开发⼈员被这有点复杂的东西搞得晕头转向,不懂得如何正确的去做好这接收参数的⼯作)这个时候,在客户端对参数进⾏⼆次编码,可以有效的避开“提交多字节字符”的这个棘⼿问题。

因为第⼀次编码,你的参数内容便不带有多字节字符了,成了纯粹的 Ascii 字符串。

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