Java,MySQL,JSP,HTML,CSS等各种乱码问题,原因以及解决方法汇总

乱码问题产生的根本原因:

编码不一致

 

所有地方的编码都必须一致,有任何一个地方不一致都会造成乱码

可以编码的地方:

HTML页面、JSP页面、JAVA程序、数据流(文本流)、数据库、数据表、数据字段

如何设置编码:

HTML:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

JSP页面:<%@ page contentType="text/html; charset=UTF-8"%>

 

JAVA程序:

设置请求和相应的数据流的字符编码

request.setCharacterEncoding("UTF-8");

response.setCharacterEncoding("UTF-8");

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

 

强制编码

String str="中文信息";

byte[] b=str.getBytes("原始的编码类型");

new String(b,"新的编码类型");

数据流(与数据库连接的流,JDBC流):
MySQL在连接字符串后面加“?characterEncoding=utf-8”

 

MySQL数据库:

以服务的方式运行

需要修改my.ini/my-defalut.ini配置文件,加入以下内容

[mysqld]

character-set-server=utf8

collation-server=utf8_general_ci

[mysql]

default-character-set=utf8

[mysql.server]

default-character-set=utf8

[mysqld_safe]

default-character-set=utf8

[client]

default-character-set=utf8

然后通过该配置文件,重新安装MySQL的服务

 

以进程的方式运行:

启动MySQL服务器以后,运行以下的SQL语句

SET character_set_client = utf8;  

SET character_set_connection = utf8;  

SET character_set_database = utf8;  

SET character_set_results = utf8;  

SET character_set_server = utf8;  

需要注意,以SQL语句方式运行,是临时设置的系统变量,重启服务以后将恢复默认值。

 

数据库的编码指定:

CREATE DATABASE `databaseName`

 DEFAULT CHARACTER SET utf8

 COLLATE utf8_general_ci

;

 

数据表的编码指定:

CREATE TABLE `tableName`

 DEFAULT CHARACTER SET utf8

 COLLATE utf8_general_ci

;

数据字段的编码指定:

ALTER TABLE `tableName`

 CHANGE `dd` `dd` VARCHAR( 45 )

 CHARACTER SET utf8

 COLLATE utf8_general_ci

 NOT NULL

;

 

在数据库的脚本中,优先级最高的是字段的编码,其次是表的编码,再次是库的编码。

IDE工具编码设置:

工作空间编码设置:Window - Preperences - General - Workspace

文件内容编码设置:Window - Preperences - General - Content Types

文件保存编码设置:Window - Preperences - Web - HTML Files

文件保存编码设置:Window - Preperences - Web - CSS Files

文件保存编码设置:Window - Preperences - Web - JSP Files

修改项目编码设置:右键单击项目:Properties - Resource

修改文件编码设置:右键单击文件:Properties - Resource
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值