中文乱码处理-阿里云开发者社区

开发者社区> jake.song> 正文

中文乱码处理

简介: 由于编码方式的不同,各种编码处理的语言不通,将导致中文乱码问题: 一、几种常见的编码方式: 1、ISO-8859-1:属于单字节编码,最多表示的字符范围是0-255,应用于英文系列。 2、GB2312/GBK:属于汉字的国标码,专门表示汉字,是双字节编码,还兼容ISO-8859-1编码,其中GBK同时表示繁体字和简体字,而GB2312只能表示简体字。
+关注继续查看

由于编码方式的不同,各种编码处理的语言不通,将导致中文乱码问题:

一、几种常见的编码方式:

1、ISO-8859-1:属于单字节编码,最多表示的字符范围是0-255,应用于英文系列。

2、GB2312/GBK:属于汉字的国标码,专门表示汉字,是双字节编码,还兼容ISO-8859-1编码,其中GBK同时表示繁体字和简体字,而GB2312只能表示简体字。

3、Unicode:属于同一编码,可以表示所有语言的字符,但它是定长双字节编码,故不兼容ISO-8859-1编码。

4、UTF-8:Unicode编码不兼容ISO-8859-1,而且占用空间更多,不便于传输和存储,UTF-8兼容ISO-8859-1而且表示所有语言字符。

二、产生乱码的几种原因:

1、在JSP编译成class文件时,如果没有指定编码格式,系统默认的编码格式为ISO-8859-1。

2、表单通过POST方法提交,未指定提交编码格式,则会默认ISO-8859-1编码提交。

3、表单通过GET方法提交,Tomcat会以默认的(ISO-8859-1)编码格式,追加到URL上,将导致乱码。

三、解决方法:

1、连接数据库时,指定编码格式:jdbc:mysql://localhost:3306/test&useUnicode=true&characterEncoding=UTF-8;

2、通过设置接收和响应的编码格式:request.setCharacterEncoding("GBK");response.setContentType("text/html;charset=GBK");

3、通过过滤器设置,其实这个和第二种是同样的道理的:

package com.song.EncodingFilter;

import java.io.*;
import javax.servlet.*;

public class EncodingFilter implements Filter{

	private String encoding = null;
	private FilterConfig config = null;

	public void destroy(){
		this.encoding = null;
		this.config = null;
	}

	public void doFilter(ServletRequest req,
						ServletResponse res,
						FilterChain chain)
						throws ServletException, IOException{
		String type = getEncoding(req);
		if(type != null){
			req.setCharacterEncoding(type);
		}
		chain.doFilter(req,res);
	}

	public void init(FilterConfig config)throws ServletException{
		this.config = config;
		this.encoding = config.getInitParameter("encoding");
	}

	public String getEncoding(ServletRequest req){
		return this.encoding;
	}
}
<filter>
	<filter-name>EncodingFilter</filter-name>
	<filter-class>com.song.EncodingFilter.EncodingFilter</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>GBK</param-value>
	</init-param>
  </filter>
  <filter-mapping>
	<filter-name>EncodingFilter</filter-name>
	<url-pattern>/*</url-pattern>
  </filter-mapping>

4、因GET方式是吧参数添加到URL上,这些方法对于GET方法提交的话将不会起到作用,对于GET提交,我们可以在Tomcat的server.xml中设置编码格式:如下:

<Connector port="80" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" 

URIEncoding=“GBK”/>

还有一种就比较麻烦点了,不过使用的也挺多的:String name = new String(username.getBytes("ISO-8859-1"),"GBK");

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Qt之处理QNetworkAccessManager网络连接超时
简述 在网络操作中,经常会由于各种原因引起网络连接超时,究竟何为网络连接超时? 网络连接超时:在程序默认的等待时间内没有得到服务器的响应 简述 超时原因 Qt 中的网络连接超时 如何处理超时 封装类 超时原因 引起网络连接超时的原因很多,下面,列举一些常见的原因: 网络断开,不过经常显示无法连接 网络阻塞,导致你不能在程序默认等待时间
3960 0
MaxCompute客户端(odpscmd)在windows命令行下查询中文乱码问题处理实践
MaxCompute客户端工具是阿里云大数据计算服务MaxCompue产品官方客户端工具,通过客户端工具可以连接MaxCompute项目,完成包括数据管理、数据上下传、作业执行、用户及授权管理等各项操作。
5437 0
MaxCompute(ODPS)上处理非结构化数据的Best Practice
随着MaxCompute(ODPS)2.0的上线,新增的非结构化数据处理框架也推出一系列的介绍文章,包括 MaxCompute上如何访问OSS数据, 基本功能用法和整体介绍,侧重介绍读取OSS数据进行计算处理; 本文:MaxCompute(ODPS)上处理非结构化数据的Best Practice。
4141 0
DyeMansion为SLS、MJF 3D打印部件提供RAL光谱着色处理
DyeMansion表示可以为SLS ,MJF 3D打印部件提供RAL光谱着色处理。 RAL彩色3D打印样本 PowerShot表面处理 PolyShot Surfacing(PSS)是DyeMansion专有的喷砂工艺之一。
1351 0
Mac mysql 解决中文乱码
Mac mysql 解决中文乱码问题 出现“???”之类的无法识别的乱码 到/etc目录下自己建一个my.cnf文件(需要最高权限,使用sudo su),然后写入内容: [client] default-character-set=utf8 [mysqld] character-set-server=utf8 保存,修改。
966 0
黑马程序员 五、异常处理和常用类)
Java帮帮-IT资源分享网  五、黑马程序员—异常处理和常用类 第五篇  1、异常 异常:就是不正常,是指程序在运行时出现的不正常情况。其实就是程序中出现的问题。 这个问题按照面向对象思想进行描述,并封装成了对象。因为问题的产生有产生的原因、有 问题的名称、有问题的描述等多个属性信息存在。当出现多属性信息最方便的方式就是将这 些信息进行封装。异常
1454 0
JavaWeb项目的中文乱码的原因以及Servlet中处理GET请求和POST请求编码过滤器
一、乱码原因 ①传输方和接收方采用的编码不一致。传输方对参数采用的是UTF-8编码而接收方却用GBK进行解析,当然是乱码。 ②Tomcat服务器默认采用的ISO8859-1编码得到参数值。虽然①中采用了同样的编码方式,但经过tomcat一处理,也会出现乱码(GET方式)   二、解决办法 方法一 每次传输都手动设置编码(GET方式传输数据) 传输方 String name =
1284 0
postman导入和给接口取中文名字
本章主要讲postman如何导入以及给接口取中文名字. image.png image.png 关注我的公众号,都是满满的干货! 孙坚.gif
1573 0
+关注
jake.song
Java深耕者一枚
39
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载