解決MYSQL中文亂碼問題三種方法
方法三
1>本文將消除亂碼分為三步:
>消除頁面亂碼,
>消除從mysql教程中讀出中文亂碼,
>消除插入mysql數據庫教程中的中文亂碼;
15>注意編碼表示方式在網頁特效p/jsp.html target=_blank >jsp教程與mysql中的區別,如下:
jsp: gb2312, gbk, utf-8....
mysql: gb2312, gbk, utf8....
關鍵問題:編碼,建議統一為gb2312或gbk,本文使用gb2312,gbk未測試;
【step1】: 消除純html頁和jsp頁在tomcat環境下運行的亂碼
這個是由於流覽器無法選擇編碼方式造成的, 手動從ie中選擇“gb2312”即可解決;也可以網頁中加入meta標記或page指令;
meta標記如下:
<meta http-equiv="content-type" content="text/html; ch***t=gb2312">
page指令如下:
<%@ page language="java" contenttype="text/html; ch***t=gb2312" pageencoding="gb2312"%>
前面說明中已經提到, meta在2k下可能不起作用(xp下時了時壞),因為簡單起見,加入page指令似乎是一個一勞永逸的事情;
總結: 加入page指令,一定可以使純jsp頁面或html頁面在tomcat環境下正常顯示。
【step2】: 消除從mysql數據庫中讀出中文的亂碼
分為兩個目標: step1: 從mysql客戶端查看中文正常, step2: 從網頁中查看中文正常;
1: 在用sql腳本創建數據庫前,設置mysql的默認編碼方式為“gb2312”,
此步可以在mysql-administrator-1.1.0-rc-win.msi中完成,或者是mysql server向導;
這樣設置完畢後再用sql 腳本創建數據庫, 注意如果sql腳本中有設置字符集為latin1或utf-8的語句,一定要刪除。
已發現目前版本《在線書店》中的sql腳本中帶有設置默認字符集為latin1,一定要刪除!
創建數據庫完畢後,用mysql cc或mysql admin可檢查所創建的數據庫的字符集,如果正確,則用mysql cc或mysql admin都可以正常查看中文;
2: 一般情況下,到這一步,在網頁中已經基本能正常顯示中文了,但凡事總有例外,可以在數據庫連接串處再特別說明一下:
string url ="jdbc:mysql://localhost/bookstore?useunicode=true&characterencoding=gb2312";
conn=drivermanager.getconnection(url,"root","");
一般情況下用 string url ="jdbc:mysql://localhost/bookstore"應該就能正常顯示中文。
總結:修改mysql server數據庫默認字符集為“gb2312”,從mysql讀出中文可正常顯示;
例外: 此時仍有可能還有亂碼,如本書光盤中的《在線書店》,請參見前面的說明。
【step3】: 消除插入mysql數據庫中的中文亂碼
此步比較簡單,在jsp頁面中加入如下代碼:
request.setcharacterencoding("gb2312");