Loading [MathJax]/jax/element/mml/optable/BasicLatin.js
posts - 55,comments - 2,views - 23011

 

博客分类:

有的时候 我们在通过后台取前台的数据的时候会出现乱码 
比如 String username = request.getParameter("username");时就会出现。

解决办法:如果你想单独解决这一个,那你就用 
String username = new String(request.getParameter("username").getBytes("iso-8859-1"),"GBK")

如果想统一解决永无后顾之忧(前提是尽量都采用一种方式,否则以前有用过上面的方式的回出现乱码): 
如果用的服务器是jboss: 找到server\default\deploy\jbossweb-tomcat55.sar\server.xml  打开  找到 
<Connector port="8080" address="{jboss.bind.address}"           maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"           emptySessionPath="true"           enableLookups="false" redirectPort="8443" acceptCount="100"           connectionTimeout="20000" disableUploadTimeout="true"/>  换成  <Connector port="8080" address="{jboss.bind.address}" 
         maxThreads="250" strategy="ms" maxHttpHeaderSize="8192" 
         emptySessionPath="true" 
         enableLookups="false" redirectPort="8443" acceptCount="100" 
         connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/> 
ok 重新发布,重启一下jboss 搞定。

如果用的是 tomcat服务器:同上,找到 Tomcat 6.0\conf\server.xml

<Connector port="8989" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" /> 
换成 
<Connector port="8989" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="GBK" />

当然这种修改服务器的方法虽然可以解决办法,但是这并不是最好的办法。如果能够用修改程序的办法来达到同样的效果的话 建议还是用修改程序的办法

 

 

 

 

 

 

 

 

<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %>
<html>
<head>
<META http-equiv=Content-Type content="text/html; charset=gb2312">

 

<%request.setCharacterEncoding("gb2312");%>

 

servlet&jsp乱码问题
SERVLET
1、页面本身有中文的时候,一个要在写PrintWriter out = resp.getWriter();之前加这句话:
   resp.setContentType("text/html;charset=GBK");
2、解决POST方式提交表单的中文乱码问题方法:
   在获得第一个参数之前加以下语句:req.setCharacterEncoding("GBK");
3、解决GET方式提交表单的中文乱码问题方法:
   修改conf目录下的server.xml 在Connector标签中(即修改8080端口的标签)中加一句话
   URIEncoding="GBK"

JSP
加入以下两段代码则可解决大部分乱码问题:
<%@ page contentType="text/html;charset=GBK"%>
<%request.setCharacterEncoding("GBK");%>

 

解决Servlet中的中文乱码问题:
1、静态中文信息乱码
response.setContentType("text/html; charset=gbk");
2、中文输入乱码
request.setCharacterEncoding("gbk");
String name =new String(request.getParamete("name").getBytes("iso-8859-1"));

servlet中输出流的默认字符编码是ISO-8859-1的

 

fileName=response.encodeURL(new String(fileName.getBytes(),"ISO8859_1"));//转码

 


运行后结果如下:


匿名 回答:2 人气:3 解决时间:2010-04-22 22:28 
满意答案好评率:0% 楼上的说法是对的。。但是写的不对

String name=request.getParameter("name");

name = new String(name.getBytes("ISO-8859-1"),"UTF-8");

 
评价答案
您已经评价过!好:0 您已经评价过!不好:0 您已经评价过!原创:0 您已经评价过!非原创:0 废人 回答采纳率:36.7% 2010-04-22 21:06 满意答案好评率:0% 首先你要弄清楚  如果是用url传的话  url的传递是用编码 ISO-8859-1  而你的编码不是这个

所以你去到的值是乱码,你要去转码就可以了

比如常用的方式

 request.getParameter("name")=new String(iso.getBytes("ISO-8859-1"),"UTF-8");

 

 

 

public static String toChi(String input) {
    try {
    //byte[] bytes = input.getBytes("ISO8859-1");

    //return new String(bytes);

        //下面两行针对tomcat5。5 配置 encode为utf-8时候
        byte[] bytes = input.getBytes("UTF-8");
        return new String((new String(bytes)).getBytes("ISO-8859-1"), "gb2312");
    }catch(Exception ex) {
    }
    return null;
    }

posted on   HPU---张振强  阅读(543)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示