整理一些mysql中文亂碼解決方案,比較實用。
在使用mysql時,插入中文字元,經常會出現亂碼,中文全被用?代替。
出現這種情況的原因,多是字符集不匹配造成的。
在mysql中,如果使用預設的字符集,在建庫、建表時,預設使用的是latin1字符集,為iso 8859-1西歐字符集。
插入中文字元時,與之不匹配,就會出現亂碼。
本人使用的是mysql 5.0版,並用c#操作mysql資料庫,當插入中文字元時,發現顯示的是亂碼。
初步估計是字符集沒有配對。查詢後,發現msyql預設使用的是latin1,因此將資料庫的配置檔案中的字元設定改為utf8,並在c#中將中文字元,轉為utf8,插入後,仍為亂碼。
mysql也支援gb2312,又將mysql的字元設定改為gb2312,c#中使用default,重起mysql後,操作仍然無效。
後想起,雖然將mysql的字符集設定為gb2312或utf8,但已經建立的資料庫和表,仍採用的是預設的字符集,也即仍為當初的西歐字符集,最好,只得忍痛將資料庫刪除,重新以gb2312字符集建立資料庫和表。
再用c#插入中文字元後,一切ok。
再安裝好mysql後,可以手工或使用配置工具,將my.ini檔案中的預設字符集改為gb2312,再重新建庫和表時,不用再在語句中指定字符集,其預設設定也即為gb2312,可以正常顯示中文字符集。
1.建立資料庫是一般的語句: create database dbname;
2.在庫中建表時語句為: create table tbname(..........)engine=myisam character set gbk collate gbk_chinese_ci;
3.程式中連線資料庫的connection物件需要寫成connection con = drivermanaager.getconnection("jdbc:mysql://...user=..&password=...&useunicode=true&characterencoding=gbk");
4.若在終端下用mysql命令向資料庫插入資料,則在進入mysql時的命令寫成:#mysql --default-character-set=gbk -u ... -p
5.在jsp頁面的編碼設定為utf-8.
我找到乙個方法好像可以解決這個問題了
在安裝mysql server的時候,無論是選擇gb2312還是utf-8,都沒有關係,這些字符集在phpmyadmin中都可以很好的工作,主要是自己的指令碼要正確的顯示中文,可以在php指令碼中,連線資料庫之後,正式的資料查詢提交之前執行下面的語句:
$setcharactersetsql = "set names '自己使用的字符集'";
$recordset1 = mysql_query($setcharactersetsql, $conn_resource) or die(mysql_error());
然後再執行自己的查詢語句,得到的結果就是正確的了。剛剛試了gb2312和utf-8,都沒有問題。
ryandoc資料字典 for sqlserver版ryancoder**生成器 for sqlserver版
MYSQL中文亂碼解決方案
mysql資料庫存在著編碼問題,主要體現在資料庫裡漢字會出現亂碼,web頁面漢字顯示不正常。歸結起來只有乙個原因 會出現編碼的地方存在編碼不一致。web開發中 mysql編碼主要會出現在五個地方 1.mysql安裝的預設編碼 latin1 在mysql.ini mysql安裝根目錄下 中設定。mys...
中文亂碼解決方案
前言 亂碼問題,一直使我們頭疼的問題。今天自己有空好好研究一番。不求太深入,只求只知皮毛。考慮不夠全面,只求給您一點幫助足矣。一 簡單介紹下pageencoding與contenttype的區別 摘自網上 pageencoding 設定jsp原始檔和響應正文中的字符集編碼。contenttype 設...
Mysql中文亂碼最佳解決方案
mysql中文亂碼最佳解決方案 mysql資料庫是乙個開源的資料庫,應用非常廣泛,很多的網際網路公司都在使用它,有的還定製通過修改其源 進行定製開發,那在使用mysql的過程中,也發現了比較多的問題,那最明顯的就是mysql的中文亂碼問題,下面就來說說mysql的中文亂碼的最佳解決方案,另外我們在使...