码迷,mamicode.com
首页 > 编程语言 > 详细

javaee中的中文乱码处理

时间:2015-06-02 17:34:24      阅读:384      评论:0      收藏:0      [点我收藏+]

标签:

浏览器正常显示

response.setContentType("text/html;charset=‘utf-8‘")

response.setCharacterEncoding("utf-8");

 

服务器端正常接收

中文乱码有三种情况

1)表单提交(get方式,post方式):input表单输入为中文

2)超链接(get);链接?参数名=值(中文)

3)sendRedict(get) 链接?参数名=值(中文)

乱码产生的根本原因

请求发送时:浏览器有默认的编码,经上述设置之后,是utf-8。

web服务器接收时候,也有一种编码,由于服务器一般是国外开发的,因此默认的编码方式一般是iso-8859-1

浏览器与服务器的编码方式不一致,因而产生乱码

问题解决方法

1,如果是表单提交,方法是post(表单提交应当尽量选择post)

此时通过http请求体传递参数,利用request.setCharacterEncoding方法,指定web服务器接受端的编码方式,如request.setCharacterEncoding("utf-8")

2,如果是表单提交,方法是get

此时通过链接传递参数,针对乱码情况,可以利用

String value=new String(request.getParameter("参数名").getBytes("iso-8859-1"),"utf-8")来解决

这种情况可以封装成一个工具类 

技术分享
package com.bobo.utils;

import java.io.UnsupportedEncodingException;

public class MyTools {
    
    public static String getNewString(String str){
        
        try {
            return new String(str.getBytes("iso-8859-1"),"utf-8");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }

}
乱码工具类

 3,超链接乱码,sendRedict的乱码本质上也是get请求,解决方法同2

4,如果是ie6及以下版本,上述方法中涉及到get方法时依然有可能出现乱码,此时的解决方法是:

对要发送的中文进行编码

String info=java.net.URLEncoder.encode("你好","utf-8");

response.sendRedict("url路径?参数名="+info);

第三个文件接收

String info=new String(request.getParameter("参数名").getBytes("iso-8859-1"),"utf-8");

补充一个知识点:

当我们下载文件的时候,可能提示框是中文乱码,此时的解决方法是:

String temp=java.net.URLEncoding.encode("中文文件名","utf-8")

response.setHeader("Content-Disposition","attachment;filename="+temp);

 

 

javaee中的中文乱码处理

标签:

原文地址:http://www.cnblogs.com/bobodeboke/p/4546571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!