1. 程式人生 > >MySQL的中文亂碼問題解決方案

MySQL的中文亂碼問題解決方案


在實現JSP頁面的時候,顯示資料庫上面的列表出現亂碼,解決成功,做個筆記,以後遇到作為參考
第一步 避免建立資料庫及表出現中文亂碼和檢視編碼方法
1.建資料庫的時候就設成utf8
create database db_name character set 'utf8' collate 'utf8_general_ci';

2.建表的時候
create table login(
....
)engine=InnoDB default charset=utf8;


第二步 我們檢視預設的編碼格式
show variables like "%char%";  

如果有出現latin1或gbk,統一按下面全部修改成utf8
修改字符集為utf8
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;
set character_set_system=utf8;
set collation_connection=utf8_swedish_ci;
SET collation_database = utf8_general_ci;
SET collation_server = utf8_general_ci

; 第三步 檢視資料庫編碼格式
show create database db_name;

檢視資料表
show create table tb_name;

第四步修改my.ini檔案
直接ctrl+F 把latin1換成gbk
然後重啟mysql
net stop mysql(注意不要有分號)
net start mysql 第五步重新登入mysql,應該就可以插入中文的資料了
插入完成後
set names gbk;
select * from tb_name;


檢視資料是否正常。 好吧,到這裡就結束了,如果還有問題的話應該就是網頁設定的問題了。
比如
1.在jsp檔案裡面
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


或者在最前面可以加上
<%@page pageEncoding="utf-8"%>

2.在applicationContext.xml裡面的連線寫的
<property name="url"
  value="jdbc:mysql:///db_name?useUnicode=true&characterEncoding=utf8">
</property>

最後補充一個 如果在不想重新建立資料庫和表的情況下我們要怎麼做呢?
將資料庫修改成utf8格式
ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;  


將表修改成utf8格式
ALTER TABLE `table_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;