1. 程式人生 > >Myeclipse+mysql出現中文亂碼情況

Myeclipse+mysql出現中文亂碼情況

首先要統一myeclipse的編碼情況:

1、進入Window--Preferences--General--Workspace,Text file encoding 選項中預設的Default(GBK)選項更改為Other,並將值設為utf-8;
2、進入Window--Preferences--MyEclipse--Files and Editors,將這個選項下面的:ASP and PHP、CSS、DTD、HTML、JSP、XML中的字元編碼全部更改為utf-8;
3、如果有必要的話,將所有JSP頁面頭上都加上這行程式碼:<%request.setCharacterEncoding("UTF-8"); %>,防止頁面傳值的時候亂碼;
4、如果有呼叫Servlet檔案的時候,在Servlet檔案中加上如下兩行程式碼 :
	request.setCharacterEncoding("UTF-8");
	response.setCharacterEncoding("UTF-8");
然後就是設定mysql的編碼:

一,先檢視mysql的編碼

在dos環境下,輸入命令show variables like'character%';


現在看到sql中很多都是拉丁編碼,最好都改成utf8編碼

使用set names ‘uft8’;命令可以設定三個字符集,相當於:

SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;


另外兩個手動設定:


很多情況下,這樣設定了之後就能把亂碼問題解決了。但是還是不能完全避免出現亂碼的可能,為什麼呢?
  因為character_set_client,character_set_connection這兩個變數僅用與保證與character_set_database編碼的一致,而character_set_results則用與保證SELECT返回的結果與程式的編碼一致。
    例如,你的資料庫(character_set_database)用的是utf8的字符集,那麼你就要保證character_set_client,character_set_connection也是utf8的字符集。而你的程式也許採用的並不是utf8,比如你的程式用的是gbk,那麼你若把character_set_results也設定為utf8的話就會出現亂碼問題。此時你應該把character_set_results設定為gbk。這樣就能保證資料庫返回的結果與你的程式的編碼一致。
到此應該就可以解決絕大多數我們遇到的亂碼問題了,另外還必須強調的是,有時候亂碼的出現有可能是以上幾種原因混合造成的。
總而言之,我們應當儘量的保證資料庫中的資料是正確的,就是客戶端到伺服器端或者伺服器端到客戶端轉換的過程中不要產生亂碼,那麼問題處理起來就相對簡單了。
為便於大家記憶,總結為以下四點:
1、要保證資料庫中存的資料與資料庫編碼一致,即資料編碼與character_set_database一致。
2、要保證通訊的字符集與資料庫的字符集

一致,即character_set_client,character_set_connection與character_set_database一致。
3、要保證SELECT的返回與程式的編碼一致,即character_set_results與程式編碼一致。
4、要保證程式編碼與瀏覽器編碼一致,即程式編碼與<meta http-equiv="Content-Type" content="text/html; charset=?" />一致。