【轉】r 讀取mysql 中文亂碼_R讀取MySQL資料出現亂碼
最終的解決辦法直接看 4
我的思路:
我用的都是utf-8編碼,電腦系統win7, MySQL-Front進行資料庫的視覺化。
1、我用的是RStudio,先去設定R的預設編碼:
Tools→Global Options...→Code→Saving→如下
雖然設定了R的預設編碼,但是問題仍然存在。
2、用dbSendQuery(con, "SET NAMES utf8"), 依舊是亂碼
library("RMySQL");
con
dbSendQuery(con, "SET NAMES utf8"); #說明用什麼字符集來獲取資料庫欄位
query
result
3、既然是從MySQL中讀取資料,那就看看是不是MySQL中的編碼設定不統一。
方法一 : 參考MySQL字符集專題(字符集,校對,亂碼) 該文章的2.3 2.4 4.2
#檢視當前資料庫字符集
show variableslike 'character%';
#檢視當前資料庫字符集校對
show variableslike 'collation%';
我的結果:
可以看到其中的很多編碼都是不統一的,用如下方法設定:
或者是方法二
通過MySQL命令列修改:(編碼可選)
mysql> set character_set_client=utf8;
mysql> set character_set_connection=utf8;
mysql> set character_set_database=utf8;
mysql> set character_set_results=utf8;
mysql> set character_set_server=utf8;
mysql> set character_set_system=utf8;
mysql> set collation_connection=utf8;
mysql> set collation_database=utf8;
mysql> set collation_server=utf8;
設定後我的MySQL-Front編輯器中輸出的結果仍然未變,我就用了,如下的方法三,成功把編碼都改為utf8。
方法三: 在MySQL-Front編輯器輸入如下,進行執行。
set character_set_client='utf8';set character_set_connection='utf8';set character_set_results='utf8';set character_set_server='utf8';
set collation_connection='utf8_unicode_ci';
set collation_server='utf8_unicode_ci';
4、經過3將MySQL中的編碼設定一致,但是問題依然沒有解決,無意間將 dbSendQuery(con, "SET NAMES gbk") 設為gbk,亂碼問題解決。
library("RMySQL");
con
dbSendQuery(con, "SET NAMES gbk"); #說明用什麼字符集來獲取資料庫欄位
query
result
R的字元編碼使用的gbk,所以讀取時的資料需要設定為gbk,資料庫 ,工作環境,本地 需要保持一致。