`
juggler
  • 浏览: 169843 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类
最新评论

令人恼火的UTF-8中文问题

 
阅读更多
我实在是气不过了,再在这里问一下:

在Tomcat 5.5中,我写了个Servlet,希望能读取在URL中的中文数据,如:http://localhost:8080/csj/ch04/testServlet?name=牛人,结果竟得到的是一堆乱码,于是查完所有google,baidu,找到一些网上的解决方法,结果还是不行,大家教教我该怎么做?

我的做法是这样的:
在tomcat中,修改:conf/server.xml,把<Connector....>中加入URIEncoding="UTF-8",
然后在Servlet的doGet,doPost最前面加入:
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");

但是在输出name变量时却是乱码,为什么?下面是我的代码:
//ServletUtils是输出Html的工具类,已包含
//<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

public class GetParameterServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) 
        throws IOException, ServletException {
        
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        ServletUtilities util = new ServletUtilities(out);
        
        String name = request.getParameter("name");
        String sex  = request.getParameter("sex");
        
        String content = "name: " + name + "<br>\n";
        content += "sex: " + sex + "<br>\n";
        content += "charset: " + request.getCharacterEncoding() + "<br>\n";
        content += "<a href=\"?sex=我\">next</a>";
        String title = "Get parameter test";
        
        util.print(title, content);
        out.close();
    }
    
    public void doPost(HttpServletRequest request, HttpServletResponse response) 
        throws IOException, ServletException {
            doGet(request, response);
    }
}


网上很多人都说这样的方法可以行得通,可是我却行不通,是不是我做漏了哪一步了?
分享到:
评论
20 楼 无聊神灯 2006-10-30  
郁闷,不能删除啊。
19 楼 flyjie 2006-10-30  
页面加上
<%@ page pageEncoding="UTF-8" contentType="text/html; charset=utf-8" %>

Servlet中不用编码了,默认用服务器编码
18 楼 cngump 2006-10-30  
我也碰到这种问题.
用URLEncoding
17 楼 wuhua 2006-10-28  
觉得通过URL传过去的参数是GBK来的,而LZ则在后台把它转换成UTF-8肯定会乱码了。
你看看,baidu, google等搜索引擎都是通过%EA%来做的
16 楼 nihongye 2006-10-28  
没搞错的话
http://localhost:8080/csj/ch04/testServlet?name=java.net.URLEncoding("牛人");
15 楼 roger 2006-10-27  
tomcat的bug
你可以在一个context建几个中文的文件夹,显示正常,但是点击进入就是报错
resin就没这个问题,直接扔一个utf-8编码过的url给它是正常的
14 楼 歆渊 2006-10-27  
这个我记得是Tomcat的bug, 对URL它直接用系统的字符集进行解码.
好像新版的IE默认都是通过UTF-8发送URL的, URLEncode并不能直接解决这个问题,因为它只处理字节的编码,而从16位的Unicode码到字节数组的转换过程才是字符集起作用的地方.

就我的经验来看这个问题只有一个比较正规的解决方法, 就是设置Tomcat的启动java命令行, 加上 -Dfile.encoding=UTF-8 这样一个参数, 可以设到 CATALINA_OPTS 变量上去.

new String(url.getBytes("ISO_8859_1")); 类似的解决方案不仅白白消耗CPU的电能增加地球温室效应, 也比较容易被变化的客户端编码击败.
13 楼 LucasLee 2006-10-27  
hi_liuyang 写道
好像有个URLEncode方法吧,

这个是正解。
JavaScript和Java里都有。
12 楼 juggler 2006-10-27  
直接一个filter?怎么弄?
11 楼 小天蝎 2006-10-27  
这个问题我也遇到过,也使用了haha1903的办法解决。不过也存在一些问题,使用了一些笨方法解决了,期待大家更好的方法。

我的处理办法是:
URL传递中文UTF-8编码问题
10 楼 hi_liuyang 2006-10-27  
好像有个URLEncode方法吧,
9 楼 socfield 2006-10-27  
直接一个filter么,好了
8 楼 haha1903 2006-10-27  
POST or new String(name.getBytes("ISO-8859-1"),"UTF-8")
7 楼 juggler 2006-10-27  
这是一种方法,但是有没有别的方法呢?
6 楼 whycloud 2006-10-27  
把连接中中文通过转换成另一种编码
就是用%的那种,就没问题了(好像叫什么base64什么的)
5 楼 juggler 2006-10-27  
我在页面里加入<a href="http://localhost:8080/csj/ch04/testServlet?name=牛人">next</a>,这样的方式也不行。
4 楼 dengyin2000 2006-10-27  
通过页面输入。。
3 楼 juggler 2006-10-27  
IE不是以UTF-8格式上传请求的吗?
2 楼 juggler 2006-10-27  
那该怎么做啊?
1 楼 dengyin2000 2006-10-27  
http://localhost:8080/csj/ch04/testServlet?name=牛人

你通过url直接写当然不行

这里的“牛人” 是gbk编码,  专程utf-8当然是乱马

相关推荐

    Serv-U9.x 无法上传文件名为中文和出现乱码解决!

    这一问题主要源于Serv-U FTP服务器对于中文编码处理不当,尤其是在启用UTF-8编码时可能出现的兼容性问题。 ### 二、问题分析 #### 1. 编码冲突 Serv-U9.x默认启用了OPTS UTF8 ON命令,意味着服务器在处理文件名时...

    ajax提交中文乱码解决方法

    然而,在处理中文字符时,经常会遇到一个令人头疼的问题——中文乱码。 #### 一、问题分析 当通过AJAX向服务器发送含有中文的数据时,如果编码方式设置不当,就可能导致服务器端接收到的数据变成乱码。这主要是...

    深入分析Java中的中文编码问题

    例如,在一个Web应用程序中,如果客户端发送的数据使用的是GBK编码,而服务器端默认使用的是UTF-8编码,则可能会导致中文乱码。 #### 五、Java Web程序中的编码问题 在Java Web开发中,编码问题主要出现在以下几个...

    python中文编码与json中文输出问题详解.docx

    - **UTF-8编码**:为了解决Unicode编码浪费存储空间的问题而设计,它根据字符的长度动态分配1到4个字节,兼容ASCII编码且支持所有Unicode字符。 #### Python字符串处理 - **Python 2.x**: - 在Python 2.x中,`str...

    JAVA 编码

    Java 编码问题在开发基于Web的Java应用程序中是一个常见且关键的问题,因为不正确的字符编码会导致乱码,影响用户...只有这样,才能确保Java应用程序在各种情况下都能正确显示和处理字符,避免出现令人困扰的乱码问题。

    java插入mysql中文乱码解决

    在使用Java应用程序与MySQL数据库交互的过程中,常常会遇到一个令人头疼的问题:中文字符在存储到数据库时出现乱码现象。这种现象通常发生在使用JDBC(Java Database Connectivity)连接数据库,并进行数据插入操作...

    pbfunc外部函数扩展(1.2.2.8) 2015-10-18

    2.GBK和UTF-8编码相互转换 3.加密解密,RSA加密解密 4.取汉字拼音首字母 5.文件哈希算法:MD5、SHA1、RIPEMD160、SHA256、Tiger、SHA512、Whirlpool、CRC32 6.字符串哈希算法:MD5、SHA1、RIPEMD160、SHA256、Tiger...

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

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

    java 中文乱码 处理

    在Java开发过程中,中文乱码问题常常令人头疼,尤其是在Web应用中,客户端提交的数据经常会出现编码不一致导致的乱码问题。本文将介绍几种解决Java中中文乱码的方法,希望能对您有所帮助。 #### 方法一:转换请求...

    解决VisualStudio复制粘贴乱码的问题

    然而,有时会出现一个令人头疼的问题:复制的代码在粘贴后显示为乱码。这可能是由于多种原因导致的,包括编码设置不一致、文本格式转换问题或者VS配置错误等。本文将详细探讨这个问题及其解决方案。 首先,我们需要...

    python中Pycharm 输出中文或打印中文乱码现象的解决办法

    在使用Python进行编程时,尤其是在处理中文字符时,经常会遇到一个令人头疼的问题——输出或打印中文时出现乱码。这一问题不仅影响程序的运行效果,还可能降低开发效率。本文将详细介绍如何在PyCharm环境下解决中文...

    ASP.NET导出Excel乱码的终极解决方案

    然而,在处理文件导出,尤其是将数据导出为Excel格式时,开发者经常会遇到一个令人头疼的问题——乱码。这个问题的根源在于字符编码的不匹配,而解决这一问题对于确保数据正确性和用户体验至关重要。 ### ASP.NET...

    网页语言编码及asp乱码问题解决方案

    最近公司有一个日文项目,由于之前使用的是自己开发的中文CMS,并没有将语言包分离,在网站建设调试过程中出现了令人头疼的乱码问题。 乱码出现的原因 由于各个字符编码的储存空间不一样,所以当使用不同的字符读取...

    润乾报表乱码问题

    润乾报表乱码问题尤其令人头疼,因为它影响了数据的显示和传输,尤其是对于汉字而言,乱码使得数据几乎无法阅读和使用。 首先,报表乱码问题分为多种类型,包括页面显示乱码、导出文件乱码和参数乱码。页面显示乱码...

    eclipse下properties文件中文乱码的解决方案

    在IT开发领域,尤其是使用Eclipse作为集成开发环境(IDE)的开发者,经常会遇到一个令人头疼的问题——Properties文件中的中文字符出现乱码。这一现象不仅影响代码的可读性,还可能造成程序运行错误。本文将深入探讨...

    织梦QQ一键登录插件

    GBK是中文环境下广泛使用的编码,而utf-8则是更通用的多语言编码,支持全球各种字符。 4. **安全考虑**:在实现一键登录的过程中,必须注意用户隐私保护和数据安全。例如,敏感信息如访问令牌应在本地加密存储,...

    SSH Secure Shell Client中文乱码

    在使用SSH Secure Shell Client过程中遇到中文乱码的情况是非常令人头疼的问题。本文将深入探讨这一现象,并给出相应的解决方案。 #### 二、问题描述与分析 根据提供的描述,“SSH Secure Shell Client中文乱码”...

    java传值中的乱码

    在Java Web开发中,经常会遇到一个令人头疼的问题:客户端向服务器传递数据时出现乱码。这种情况不仅会影响用户体验,还可能导致程序逻辑错误。本文将深入探讨Java传值中的乱码问题,并提供一种简单有效的解决方案。...

Global site tag (gtag.js) - Google Analytics