1. 程式人生 > 其它 >【轉】r 讀取mysql 中文亂碼_R讀取MySQL資料出現亂碼

【轉】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,資料庫 ,工作環境,本地 需要保持一致。