javaee中的中文乱码处理

浏览器正常显示

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);

时间: 2024-11-13 10:03:08

javaee中的中文乱码处理的相关文章

解决Centos 6.3 中 gedit中文乱码问题

1.安装gconf-editor yum list | grep conf-editor yum install gconf-editor 2.运行gconf-editor 设置: apps  ---> gedit-2  --->  preferences  ----> encoding auto-detected 项添加Add New list value: GB2312 shown_in_menu 项添加 New list value: GB2312  解决Centos 6.3 中

jsp get方式请求参数中包含中文乱码问题解决

1. 自己接收到参数之后在后台进行转码处理 2: 修改tomcat的配置文件  server.xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/> 即可 jsp get方式请求参数中包含中文乱码问题解决,布布扣,bubuk

分布式监控系统Zabbix-3.0.3-完整安装记录(4)-解决zabbix监控图中出现中文乱码问题

之前部署了Zabbix-3.0.3监控系统,在安装数据库时已经将zabbix库设置了utf-8字符. 首先确定zabbix开启了中文支持功能:登录到zabbix服务器的数据目录下(前面部署的zabbix数据目录是/data/www/zabbix),打开 locales.inc.php文件[[email protected] include]# pwd/data/www/zabbix/include[[email protected] include]# vim locales.inc.php 然

C#中WebClient中文乱码的解决办法

原文:C#中WebClient中文乱码的解决办法 第一次尝试: string question = textBox1.Text.ToString(); WebClient youdao = new WebClient(); youdao.Encoding = System.Text.Encoding.GetEncoding("GB2312"); Uri uri = new Uri("http://xxxxxxxxxxxxxx"); textBox1.Text =yo

cocos2dx学习笔记(4)——VS2010中的中文乱码问题

当你想使用中文时,你是否有这样的一个困惑. 把样例中的HelloWorld改成中文的 "你好,世界!". 然后编译运行,发现居然是个乱码!!! 因为cocos2dx中使用的是UTF-8字符集,而VS中确实ANSI. 所以我们需要对其进行字符集转换. 然后纵里寻它求百度,终于找到了解决方案. 一个函数搞定! #include "cocos2d.h" char* toUTF(const char* strGB2312) { int iLen = MultiByteToW

jquery.ajax的url中传递中文乱码问题的解决方法

jquery.ajax的url中传递中文乱码问题的解决方法 JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQuery正在乱码的原因,在未指定字符集的时候,是使用ISO-8859-1 ISO8859-1,通常叫做Latin-1.Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符. JQuery的Ajax根本没有考虑到国际化的问题,使用了欧洲的字符集,所以才引起了传递中文出现乱码的问题. 而我们的UTF-8

loadrunner 脚本和replaylog中的中文乱码问题(转载)

解决这个问题必须认识到一个事实就是,loadrunner和测试服务器交换数据使用的是utf8格式,但是展现在replaylog中是使用gb2312格式,而且在脚本中如何使用web_reg_find的时候也是使用的是gb2312格式,所以知道这个原理后,事情就好办多了. 首先使用关联函数web_reg_save_param将服务器返回的Server Response 内容保存为参数,接着利用 lr_convert_string_encoding函数进行编码格式转换即可. 此时注意---关联函数是一

mysql 中的中文乱码

如果查看mysql数据库中的数据时发现中文乱码,可以试试: 1.show variables like 'charact%' 使用set 命令(set character_set_client=gbk;),改为上图 mysql 中的中文乱码

sae python中Mysql中文乱码的解决

一开始我用的是: db=MySQLdb.connect(db=sae.const.MYSQL_DB,user=sae.const.MYSQL_USER,passwd=sae.const.MYSQL_PASS,host=sae.const.MYSQL_HOST,port=int(sae.const.MYSQL_PORT)) 数据库编码与python代码的编码都已设为utf8,在PHPMyAdmin中添加中文记录,在网页查询显示中却显示乱码,我在网上各种搜索都找不到解决方法.最后终于发现在连接数据库