一、lampp環境下的資料庫亂碼問題
問題描述:
在做mysql練習的時候發現新建立的資料庫中插入資料表中的記錄中文出現亂碼的問題,如下圖:
經過多方查證,整裡如下文擋:
前提:我自己的環境是使用的lampp下的mysql,該配置檔案是在/opt/lampp/etc/my.cnf;如果是自己安裝的mysql,那麼配置檔案一般都在/etc/my.cnf
解決辦法:
1、首先進入msyql,然後使用show variables like 'character%' ,執行編碼顯示,可以看到如下圖所示:
預設的是客戶端和伺服器都用了latin1,所以會亂碼。
2、修改/opt/lampp/etc/my.cof檔案
[client]在mysql,mysqld,client下分別新增如上語句#password = your_password
port = 3306
socket = /opt/lampp/var/mysql/mysql.sock
default-character-set=utf8 //新增該語句
[mysqld]
user = mysql
port=3306
socket = /opt/lampp/var/mysql/mysql.sock
skip-external-locking
key_buffer = 16m
max_allowed_packet = 1m
table_open_cache = 64
sort_buffer_size = 512k
net_buffer_length = 8k
read_buffer_size = 256k
read_rnd_buffer_size = 512k
myisam_sort_buffer_size = 8m
character_set_server=utf8 //新增該語句
[mysql]
no-auto-rehash
default-character-set=utf8 //新增該語句
注意:如果修改後不能啟動報錯試試把default-character-set=utf8改為character_set_server=utf8;我這裡遇到了該問題,所以去掉了default後就正常了 ,指令碼中沒有使用default-character-set=utf8。
3、使用命令drop database 資料庫名,刪除建立的資料庫
4、重啟mysql的服務:/opt/lampp/lampp restart
5、重新建立資料庫及表結構,再次插入資料即可正常使用,如下圖:
方法2:
網上還有另外一種使用sql語句修改編碼值的,但是我試了一下,通過sql語句是可以修改編碼值,但是重啟mysql服務後還是會變回原來的值,而且即便使用sql語句修改過來後在重新建立資料表在插入資料還是會產生亂碼(也可能**操做不對,但是不我提倡這麼修改)
使用sql語句修改的方法:
1、首先進入mysql,然後在mysql下執行如下語句:
set character_set_database = utf8;
set character_set_server = utf8;
2、使用命令show variables like 'character%' ,執行編碼顯示,可以看到如下圖所示:
3、在使用create database test;建立資料庫,在該庫中建立資料表,然後在插入資料,檢視是否正常!
二、linux下yum自動安裝mysql亂碼問題解決辦法
如果使用yum方法自動安裝的mysql服務,則mysql的配置檔案是在/etc/my.cnf;修改該檔案的時候可能出現該檔案中只有[mysqld]、[mysqld_safe],如果我們只是在mysqld下邊加入
default-character-set=utf8,無法將所有的選項都修改為utf8的格式,如下圖:
所以這裡我們需要在my.cnf檔案下手動配置[client]選項並在該選項下加入:default-character-set=utf8即可,如下圖:
新增完成後重啟mysql的服務,然後在重新建立資料庫和資料表,之後在使用第三方管理工具連線就不會出現亂碼的問題了,如下圖。
總之遇到亂碼的問題,可以通過show variables like 'character%' ; 該命令進行檢視,將字符集設定成utf8後基本都會解決掉。
Linux下 mysql中文亂碼
中文存入 mysql 資料庫出現的亂碼,從 jsp 頁面讀取 mysql 中文資料出現亂碼,以及在 sell 環境下檢視資料庫表中文資料出現亂碼。為了解決中文亂碼問題,首先是採用同一字符集。本人採用的是 gbk.1.安裝mysql後首先修改配置檔案 etc my.cnf 注 可能安裝的目錄不同,通過...
linux下mysql中文亂碼 中文問號 解決辦法
安裝完的mysql的預設字符集為 latin1 為了要將其字符集改為使用者所需要的 比如utf8 就必須改其相關的配置檔案 由於linux下mysql的預設安裝目錄分布在不同的檔案下 不像windows一樣放在同一目錄下,只需修改其中的my.ini檔案,重起後就生效了 所以先來看看linux下mys...
linux下中文亂碼
輸入locale檢視 如果像這種是可以看到中文的 今天無意間執行了命令導致中文全部展示?了 解決辦法 輸入export lc all zh cn.utf 8 etc locale.conf就可以了 方法二 這種方法更有效 vim etc locale.conf lang zh cn.utf 8 la...