mysql資料庫中文亂碼問題

2021-08-30 14:33:29 字數 1686 閱讀 3275

mysql資料庫存在著編碼問題,主要體現在資料庫裡漢字會出現亂碼,web頁面漢字顯示不正常。

歸結起來只有乙個原因:會出現編碼的地方存在編碼不一致。

web開發中:mysql編碼主要會出現在五個地方:

1. mysql安裝的預設編碼(latin1)-在mysql.ini(mysql安裝根目錄下)中設定。[mysqld]選項,預設沒有。新增即在最後一行加入default- character-set=utf8。

2.mysql資料庫的編碼,原則上預設的編碼是mysql安裝的預設編碼,也可以在建庫時用語句來執行:create databasedbname default character set utf8;我這裡是建立乙個utf8編碼的dbname資料庫。

3.mysql資料表的編碼,原則上預設是第二步建立的資料庫的編碼。提倡不要在creat table時加上編碼

4.利用程式建立mysql連線時,連線字串使用的編碼。如jdbc,php mysql_connect(),這個地方必須是與你頁面的編碼一致。

5.web程式頁面的編碼,charset=utf8;與4必須一致。

除上面5個地方外,另有乙個不是編碼者所能控制的,那就是瀏覽使用者的瀏覽器的編碼,一般是自動選擇,就不列入了。

上述五個地方,我所知道的保證不出現亂碼的方法是:

1 無所謂,但是如果可以調整的話,可以設定成你所需要統一的乙個編碼,如utf8

2,3比較重要,我所理解的必須是一致。建議是在建庫語句時帶上編碼,建表時就不指定編碼了。

4是必須的,php下:

$link = mysql_connect('localhost', 'root', '') or die('could not connect: ' . mysql_error());

echo 'connected successfully';

mysql_select_db('wordpress') or die('could not select database');

mysql_query("set names utf8;"); //這句

如利用pdo的話 $dbh = new pdo($dsn, $config['db']['username'], $config['db']['password']);

$dbh->exec('set character set utf8'); //這句

5在web頁面中必須設定成上面的統一的編碼。

請不要結束,繼續往下看:上述方法中必須統一是統一的編碼,我使用的是utf8,為什麼使用 utf8是我正要說的。

備註說明

1、統一使用gbk編碼的話,大多數時候是不會出問題。但是如果遇到·這種字元,這個欄位後的所有漢字都回出現亂碼。這在oracle中同樣存在。因為mysql,oracle的預設編碼似乎都是(mysql-latin1亦是)iso-8559-1,對某些特殊字元會出現亂碼。因此建議使用 utf8。使用utf8亦是我以前排斥的,但是在hiu遇到瘋狂的小覃後改變了我的觀點,utf8有利於建設**的其它版本,比如英文版...,而且設定似乎也沒有絲毫麻煩。。。

2、在上述的乙個過程中,使用了mysql的gui管理工具(除去web形式的phpadmin)的,如果你出現了亂碼問題,那是顯然的。比如 sqlyog, mysql 的 mysql administrator是有預設編碼的。所以在建庫,建表的時候盡量使用語句在工具裡來執行,而不是直接右鍵來createdatabase。 phpadmin不存在這個問題(它是web程式)。

資料庫中文亂碼問題(mysql)

好多朋友都遇到過資料庫中訪問中文亂碼的情況,要解決有很多方法,這裡給我我個人遇到的情況!首先要做到的是將資料庫與程式統一編碼 都用utf 8,或都用gbk,gb2312.下面給出的是都用utf 8的例子 1.建資料庫時要把資料庫的型別設定為utf 8的,2.連線資料庫時要宣告採用utf 8字符集 c...

mysql資料庫 中文亂碼

參考文章 本文有些長情況複雜,可直接看最下面 8 總結 解決方案 1.mysql資料庫中文顯示亂碼 命令列中也是 在sqlyog裡面顯示?在命令列也顯示?2.命令 show variables like character 從上圖中可以看到 mysql 有六處使用了字符集,分別為 client co...

Mysql資料庫中文亂碼

資料庫儲存資料的時候經常會出現亂碼。導致亂碼的原因可能有三種 1.資料本身與資料庫指定的字符集不同,則需要在插入資料之前,將資料的編碼格式轉換成與資料庫指定字符集相同,或者也可以將資料庫指定的字符集該為與資料相同的字符集。2.資料庫指定的字符集本身不支援中文,例如latin。3.如果用 操作插入資料...