`
xdy2008
  • 浏览: 54246 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

apache+tomcat 乱码问题

阅读更多
apache+tomcat 乱码问题

1.tomcat里面,HTTP请求设置 URIEncoding="UTF-8",页面只要是用UTF-8编码,这里设置就可以了,
案例1:
我尝试给apache加上AddDefaultCharset ISO-8859-1,没有。改成AddDefaultCharset UTF-8,也没用。改成AddDefaultCharset off,还是没有用。
这么看来,问题不在apache的配置这里了。

那么问题在那里呢??!我晕掉了。
后来我想起了一个问题,请求是apche转发给tomcat的,那么会不会是apache转到tomcat的时候,出现的乱码呢?
于是,我把tomcat配置转接接口的配置改了一下
代码如下:

Java代码 
1.<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/> 
 
成功了。

2.tomcat与apache连接的时候,需要将apache的编码方式与tomcat一致,不然在用中文传递的时候产生乱码,
解决办法1:在与apache连接的 ajp里面进行设置编码方式:URIEncoding="UTF-8",达到统一就可以了,
解决办法2:在apache里面设置编码方式:

服务器端:
======
修改httpd.conf (在Redhat中放置的位置为/etc/httpd/conf/)
查找:
AddDefaultCharset ISO-8859-1
改成:
#AddDefaultCharset ISO-8859-1
AddDefaultCharset off

这种方式关掉了服务器的默认语言的发送,这样仅凭html文件头中设置的语言来决定网页语言。

很多文章都说通过修改为 AddDefaultCharset GB2312 把缺省语言改成GB2312来解决中文乱码,确实GB2312内码的网页可以正常显示了,但这并非万全之策。因为当你的网页内码不是GB2312,就算你在网页用下面的meta指定了正确的语言,如ISO8859-1,也不会解码为ISO8859-1,因为Apache已经先你一步将GB2312指定为网页的语言了

解决办法三:
在代码中进行转码,apache过来的是iso8859-1.
JSP页面:
1.var params = ....  
2.params = encodeURI(params);   //进行URLencode。
3.url = url + '&' + params;  
4.... 

JAVA里面进行解码:
1.public static Map<String, String> decodeRequestToMap(HttpServletRequest request) {  
2.    Map<String, String> m = new HashMap<String, String>();  
3.    Enumeration<String> e = request.getParameterNames();  
4.    try {  
5.        while(e.hasMoreElements()) {  
6.            String k = e.nextElement();  
7.            String value = URLDecoder.decode(request.getParameter(k), "UTF-8");  
8.            m.put(k, value);  
9.        }  
10.    } catch (UnsupportedEncodingException e1) {  
11.        if (log.isErrorEnabled()) {  
12.            log.error("不可能不支持UTF-8的啊!", e1);  
13.        }  
14.    }  
15.    return m;  
16.} 

案例2:
1.jsp 页面中的JS代码:  
2. 
3.function  removeFile(str){  
4.     var title = document.getElementById("title").value;  
5.     window.location.href="<%=request.getContextPath()%>/removeAnnualReport.do?   title="+encodeURI(encodeURI(title));  
6. }  
7.注意:使用两次encodeURI 对title 进行转换  

Java代码 
1. java中转码:  
2.   
3.this.getRequest().setCharacterEncoding("UTF-8");  
4.title =URLDecoder.decode(title, "UTF-8");  
5. 
6.URLDecoder 进行解码 
java中转码:
this.getRequest().setCharacterEncoding("UTF-8");
title =URLDecoder.decode(title, "UTF-8");

使用URLDecoder 进行解码

经以上测试,成功。记录一下。



分享到:
评论

相关推荐

    《Java Web开发与实战--Eclipse+Tomcat+Servlet+JSP整合应用》.(刘伟,张利国).[PDF].zip

    上传、java mail和分页显示、web编程中文乱码问题及解决方案、应用程序的打包和部署等。书中还深入讲解了客户端验证框架jsvalidation、在线文本编辑器fckeditor和apache commons的一些类库等功能强大的实用开发工具...

    apache-tomcat-8.0.33中文.zip

    Apache Tomcat 8.0.33 在处理请求和响应时,提供了良好的字符集支持,可以有效地避免中文乱码问题。它允许开发者通过配置服务器或应用程序级别的设置来指定默认编码,确保数据在输入和输出过程中保持正确性。 在...

    apache-tomcat-8.5.53_tomcat的8.0版本_ApacheTomcat8.5_choiceyqj_

    - **logs目录**:存放Tomcat的日志文件,经过优化,现在应该不会有乱码问题。 - **temp目录**:Tomcat运行时的临时文件存储区域。 - **work目录**:Servlet和JSP编译后的类文件以及应用的工作目录。 要开始使用这个...

    Java Web开发与实战:Eclipse+Tomcat+Servlet+JSP整合应用(含光盘源代码)

    主要内容包括web应用程序运行原理、主流集成开发工具(eclipse/myeclipse)和运行环境(tomcat)的配置和使用、servlet、jsp、jdbc、jsp表达式语言(el)、servlet监听器和过滤器、定制标记库、jstl、mvc模式、dao...

    apache-tomcat-8.0.33中文自动解决GBK乱码问题

    apache-tomcat-8.0.33,针对有些项目的前端页面中,又有UTF-8,又有GBK,但是开发工具只配置了一种编码,导致其他页面出现部分乱码,并且更改该文件的编码也无效。而该工具可以自动解决UTF-8和GBK乱码的问题。 使用...

    apache-tomcat-7 x64和x86安装包(带配置文档)

    - 使用`Connector`元素的`URIEncoding`属性来指定URL编码,以避免乱码问题。 6. **安全配置** - 配置SSL支持以启用HTTPS,需要在`server.xml`的`Connector`元素中添加相关配置,并导入证书。 - 限制对`manager/...

    服务器CentOs6.6+ JDK1.7+Tomcat7+MySQL5.6安装部署记录

    - 在`&lt;Connector&gt;`标签中添加`URIEncoding='UTF-8'`以解决页面乱码问题。 4. **启动Tomcat服务:** - 执行`/home/tomcat-sysh/apache-tomcat-7.0.29/bin/startup.sh`启动Tomcat。 - 使用浏览器访问`...

    关于中文版的Eclipse+tomcat+MyEclipse配置

    在Eclipse的"Window" -&gt; "Preferences" -&gt; "General" -&gt; "Appearance" -&gt; "Colors and Fonts"中,可以设置合适的编码和字体,以避免中文乱码问题。对于Tomcat,也需要检查其conf/server.xml文件中的字符集设置,确保...

    java+tomcat+eclips配置[整理].pdf

    为了处理HTTP请求中中文参数的乱码问题,需要在`server.xml`中添加`URIEncoding="UTF-8"`属性。此外,可以修改`context.xml`,将`&lt;Context&gt;`标签改为`&lt;Context reloadable="true"&gt;`,使得在开发过程中,Web应用的...

    tomcat显示出现中文乱码问题.docx

    在使用Apache Tomcat服务器的过程中,有时会遇到中文乱码的问题,这主要表现为在日志输出、控制台打印或者Web应用中的请求参数、响应内容显示不正常,出现问号或者其他非中文字符。这个问题通常是由于字符编码设置不...

    关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论

    标题中的“关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论”涉及了两个关键的IT概念:Tomcat服务器的字符编码问题和Java虚拟机(JVM)内存管理的问题。让我们逐一深入探讨这两个主题。 首先,我们来...

    Jdk+Tomcat+Eclipse安装和配置

    - 打开`C:\tomcat\conf\server.xml`文件,找到`&lt;Connector&gt;`标签,在其中添加`URIEncoding="UTF-8"`以解决中文乱码问题。 ```xml ``` - **Context.xml** - 在`C:\tomcat\conf\context.xml`中,将`&lt;Context&gt;`...

    apache-tomcat-7.zip 解决了编码问题 和 healder限制问题

    这个版本,即apache-tomcat-7.zip,针对两个关键问题进行了优化:编码问题和header限制问题。 首先,让我们深入探讨“编码问题”。在处理Web应用程序时,编码问题通常是由于字符集不一致或者不正确配置导致的。这...

    jdk+tomcat+jfreechart+sql_server2000安装心得

    5. **解决乱码问题**: - 修改`conf/server.xml`文件中的`&lt;Connector&gt;`标签,添加`URIEncoding="GBK"`参数: ``` ``` #### JFreeChart 配置 1. **部署JFreeChart**: - 将JFreeChart的相关JAR文件(至少5个...

    centos7+Tomcat+MySQL+nginx电子商务站点部署及rsync备份

    12. **解决zabbix乱码故障**:配置字符编码,避免出现乱码问题。 13. **在被监控服务器上安装zabbix-agent**:安装Zabbix代理以便于远程监控。 14. **配置主机组和主机**:在Zabbix中设置监控的主机组和主机信息。 ...

    精心整理的jdk+tomcat+oracle部署手册

    手册中虽然没有详细展开Oracle的安装步骤,但提到了建议使用英文环境以避免乱码问题,并且推荐使用UTF-8字符编码,这有利于跨语言数据处理。Oracle的启动命令包括`dbstart`和`lsnrctl start`,前者用于启动数据库...

Global site tag (gtag.js) - Google Analytics