`
jiayanjujyj
  • 浏览: 198444 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

处理URL传递中文乱码问题

阅读更多

 

转自:http://www.blogjava.net/auditionlsl/archive/2009/05/26/278011.html

 

在网上搜了很多资料都没有搞定 , 一般都有以下几种说法 :

方法 1: 在后台中先获得字符串的 iso-8859-1 编码形式数组 , 再使用此数组实例一个UTF-8编码 形式 String 类型字符串.

页面提交的 url :

leavesp?work= 部门主管审批

 

后台处理 :

String inStr=request.getParameter("work ");

String outStr = new String(inStr.getBytes("iso-8859-1"),"UTF-8");

 

方法 2: 在页面传递过来时先通过 JavaScript URL 编码 , 再到后台进行解码 :

页面部分 :

<script type="text/javascript">

function dogetMethod(url)

{

        //url 编码前 : leavesp?work= 部门主管审批

 

url=encodeURI(url);

 

//url 编码后 :

leavesp?work=%E9%83%A8%E9%97%A8%E4%B8%BB%E7%AE%A1%E5%AE%A1%E6%89%B9

 

window.open(uri,’’,’’);

}

</script>

后台部分 :( 解码 )

String inStr= request.getParameter("work ");

String outStr=java.net.URLDecoder.decode(inStr);

 

尝试过两种方法后好像都不行 , 在后台获取到的字符还是会乱码 . 试完之后真想哭 .*o*

使用第一种方法后发现 :

在请求 (request) 中获得的字符串是这样的 : ²¿ ÃÅÖ ÷¹ ÜÉ ó Å ú

使用 new String(inStr.getBytes("iso-8859-1"),"UTF-8"); 处理后字符成了 : ����������

 

没法 , 只能再试第二种方法了 , 使用后发现 :

在页面中使用 encodeURI(url) , 字符串是这样的 :

%E9%83%A8%E9%97%A8%E4%B8%BB%E7%AE%A1%E5%AE%A1%E6%89%B9

好像有希望了 !!!!

应该只要在后台再来 decoder 一下就行了吧 , 偶是这样想的 , 也是这样做的 :

在后台中 :

       String inStr= request.getParameter("work ");

outStr=java.net.URLDecoder.decode(inStr);

在请求中获得的字符串是这样的 : é ƒ¨é—¨ä¸»ç®¡å®¡æ‰¹

decoder 处理后得出的字符串为 : é ƒ¨é—¨ä¸»ç®¡å®¡æ‰¹

 

这时候真想哭啊 !!%#$%@@!@$$##

 

革命尚未成功 , 还需努力 !!!

 

从第二种方法中发现 :

在请求中获得的字符串已经乱码了 , decoder 处不处理值都是一个样 !!

明明我在页面传过来的值是已经 encode 过了的字符 , 而后来取出来却 …., 这是为什么呢 ?

 

难倒是页面编码设置得有问题 ?

看了一下页面编码是 : pageEncoding="UTF-8"

改了 ! 改成 : pageEncoding="iso-8859-1" 试试 .

浏览页面上 , 发现页面上的中文变成了很多é æ‰ 之类的字符 , 不管了 , 再试下 , 还是一样的结果 . 涛声依旧 !

 

忽然想到应该是在获得字符串之前 , 也就是在 request. getParameter("work "); 这之前的某个地方已经将 URL 进行了 decoder, 并且将获得的字符用 Iso-8859-1 的编码方式存储过了 .

 

所以在 request 中会得到这些类似于é æ‰ 之类的字符 , 这种字符应该就是中文的 iso-8859-1 的形式 !!

 

有办法了 , 既然已经获得了 iso-8859-1 编码形式的中文 , 那就只要再使用第一种方法(先获得字符串的 iso-8859-1 数组,再将它实例成 UTF-8 的字符串)来进行处理不就 OK !

 

试过之后果然 OK!!!  

 

处理中文乱码代码实现部分:

 

jsp 页面:

<%@ page language = "java" pageEncoding = "UTF-8" %>

 

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >

< html >

  < head >

    < script type = "text/javascript" >

        // 开启网页对话脚本

        function openDialog(url,width,height)

        {

           var property= "status:no;center:yes;resizable:yes;scroll:yes;dialogWidth:" +width+ "px;dialogHeight:" +height+ "px;" ;  

           var ret=window.showModalDialog(url, 'modalDialogwin' ,property);

                 

           if (ret == null || ret == "" )

           {return false ; }

           return true ;

        }

       

        // 查看待办工作脚本

        function showork(url)

        { 

           // url 地址进行编码                   

           url=encodeURI(url);

           //alert(url);

           // 调用 openDialog 方法开启网页对话框

           openDialog(url,900,500)

        }

    </ script >  

    < title > 待办工作查看 </ title >

 

  </ head >

   

  < body >

  <!-- 部分代码略 -->

    < table border = "1" align = "center" >

        < tr >

           < td >

< a href = "#" onclick = "javascript:showork('leavesp?work= 部门主管审批 ') "> 查看待办工作 </ a >

</ td >    

        </ tr >             

    </ table >   

  </ body >

</ html >

 

页面部分就一个超连接,用来开启一个网页对话框,只是开启的这个对话框中请求的不是一个物理的页面,而是请求的一个 servlet leavesp ),而且 url 中带有中文参数值( ?work= 部门主管审批 )。

 

(看下一篇文章)

 

分享到:
评论

相关推荐

    教学视频--JSP中URL传递中文乱码问题的解决演示.rar

    然而,在实际操作中,我们时常会遇到一个问题,那就是当JSP页面通过URL传递包含中文字符的参数时,可能会出现乱码现象。这个问题主要源于HTTP协议的特性以及字符编码的处理不当。本教学视频将详细讲解如何解决JSP中...

    asp.net中URL参数传值中文乱码的三种解决办法

    在ASP.NET开发过程中,我们时常会遇到URL参数传递中文字符时出现乱码的问题。这个问题主要源于字符编码不一致导致的,下面将详细讲解三种解决这个问题的方法。 ### 方法一:设置Web.config配置 在ASP.NET应用的`...

    解决JS传递中文乱码问题

    ### 解决JS传递中文乱码问题 在Web开发过程中,我们经常会遇到中文字符编码的问题,尤其是在前后端数据交互时,中文字符的乱码问题更是让人头疼。本文将深入探讨如何解决JavaScript(简称JS)在传递中文字符时出现...

    奇数个中文字符url传递乱码

    为了解决奇数个中文字符URL传递乱码的问题,可以采用JavaScript来实现正确的编码处理。具体步骤如下: 1. **获取原始URL**:首先获取用户输入或系统生成的原始URL。 2. **编码处理**: - 使用`encodeURI()`函数...

    url地址传参中文乱码处理

    URL地址传参中文乱码处理是指在Web应用程序中,将中文参数传递给服务器时,可能出现乱码的情况。这种情况可能是由于编码问题或Tomcat服务器的配置问题引起的。 在处理URL地址传参中文乱码时,通常有三种解决方案: ...

    jquery获取URL中参数解决中文乱码问题的两种方法

    当我们需要在两个页面间通过URL传递参数时,经常会遇到中文乱码问题。这个问题主要是因为URL中的参数可能没有经过正确的编码和解码处理。为了解决这个问题,我们可以采取一些方法,特别是当使用jQuery来获取URL参数...

    extjs 前后台交互参数出现中文乱码问题的解决方法

    ### extjs前后台交互参数出现中文乱码问题的解决方法 #### 问题背景与原因分析 在使用MyEclipse开发工具进行Web应用开发时,尤其是采用ExtJS框架结合Ajax技术进行前后端数据交互的过程中,可能会遇到一个常见的...

    jsp使用URL编码传递中文参数乱码问题

    jsp使用URL编码传递中文参数乱码问题

    Jsp页面在URL中传递参数会出现乱码问题解决

    在Web开发中,尤其是使用Java JSP技术时,我们可能会遇到URL中传递参数出现乱码的问题。这是因为不同的字符集编码方式可能导致字符在传输过程中无法正确解析。本文将详细介绍两种解决JSP页面URL参数乱码的方法,虽然...

    中文乱码处理问题总结

    ### 中文乱码处理问题总结 #### 一、引言 在进行中文字符处理时,经常会出现乱码问题。这主要是因为不同的系统、程序或组件可能采用不同的编码方式,而这些编码方式之间的转换不当就会导致乱码现象。本文将重点...

    asp.net页面通过URL参数传值中文乱码问题解决办法

    在Asp.Net开发中,遇到页面通过URL参数传递中文字符时出现乱码是一个常见的问题。这个问题通常是由于字符编码不一致导致的。以下是三种常见的解决方法: 1. **配置Web.config文件**: 在Web.config文件的`...

    解决url中文乱码.doc

    在Java Web开发中,URL中文乱码问题是一个常见的困扰,主要出现在传递含有中文字符的参数时。本案例中,我们将探讨如何解决这个问题,涉及到的主要知识点包括URL编码、字符集转换以及在Java Servlet、JSP和Struts2...

    jsp使用URL编码传递中文参数问题.doc

    在JSP开发中,处理URL编码传递中文参数是常见的需求,尤其是在构建动态网页时。这个问题主要涉及到字符编码的转换,因为不同的编码标准可能导致乱码。以下是对这个主题的详细解释: 1. **URL编码**:URL(统一资源...

    ajax传递中文参数乱码解决办法

    然而,在处理中文等非ASCII字符时,经常会遇到一个令人头疼的问题——中文乱码。本文将详细介绍如何在JavaScript中对中文进行编码,并在Java后端进行解码来解决这一问题。 #### 一、问题背景 在使用AJAX向服务器...

    Ajax中文乱码问题解决方案

    然而,在处理中文字符时,Ajax请求可能会遇到乱码问题,这主要是由于编码格式不一致或者处理不当导致的。本文将深入探讨Ajax中文乱码问题的成因,并提供一系列解决方案。 **一、问题原因** 1. **编码格式不一致**...

    Java Http请求传json数据乱码问题的解决

    在实际解决乱码问题的过程中,如果发现使用Base64加密传输中文数据还会出现问题,可以改用URL编码的方式来传输数据,即使用JavaScript的`encodeURI`函数对数据进行两次URL编码,后端接收到后进行一次URL解码即可。...

    JSP-GET-POST传递的乱码问题

    然而,在处理中文参数时,尤其是通过GET和POST方法传递时,经常会出现乱码问题。这通常是由于字符编码不一致或者处理不当导致的。以下是对这一问题的详细解析: 首先,我们需要理解字符编码的基本概念。在Web中,...

    servlet url传递中文参数

    当我们需要通过URL传递参数时,经常会遇到中文参数的问题。这是因为URL本身是基于ASCII编码的,不支持直接传输非ASCII字符,如中文。本篇将详细介绍如何在Servlet中处理URL传递中文参数的情况。 首先,了解URL编码...

    解决qr_code中文乱码问题

    在二维码(QR Code)编码和解码过程中,中文字符可能会出现乱码问题,这通常是由于编码格式不正确或处理方式不当导致的。本教程将详细解释这个问题,并提供一个开源示例帮助你理解和解决中文乱码问题。 首先,我们...

    AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题

    ### AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题 #### 背景与问题概述 在使用AJAX技术进行前后端数据交互时,经常会出现中文字符编码的问题,尤其是在使用`XMLHttpRequest`对象发送请求的过程中。例如...

Global site tag (gtag.js) - Google Analytics