最終的解決辦法直接看 4
我的思路:
我用的都是utf-8編碼,電腦系統win7, MySQL-Front進行數據庫的可視化。
1、我用的是RStudio,先去設置R的默認編碼:
Tools→Global Options...→Code→Saving→如下
雖然設置了R的默認編碼,但是問題仍然存在。
2、用dbSendQuery(con, "SET NAMES utf8"), 依舊是亂碼
library("RMySQL");
con<-dbConnect(MySQL(), user="", password="", dbname=""); #打開連接
dbSendQuery(con, "SET NAMES utf8"); #說明用什么字符集來獲取數據庫字段
query<-dbSendQuery(con, "select * from table1 ");
result<-fetch(query);
3、既然是從MySQL中讀取數據,那就看看是不是MySQL中的編碼設置不統一。
方法一 : 參考MySQL字符集專題(字符集,校對,亂碼) 該文章的2.3 2.4 4.2
#查看當前數據庫字符集 show variables like 'character%'; #查看當前數據庫字符集校對 show variables like 'collation%';
我的結果:

可以看到其中的很多編碼都是不統一的,用如下方法設置:
或者是方法二
方法二:mysql 更改數據庫字符編碼的方法 百度經驗
通過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<-dbConnect(MySQL(), user="", password="", dbname=""); #打開連接
dbSendQuery(con, "SET NAMES gbk"); #說明用什么字符集來獲取數據庫字段
query<-dbSendQuery(con, "select * from table1 ");
result<-fetch(query);
為什么會是這樣? 參考 求解 r鏈接mysql 查詢結果出現 亂碼 ,如何更改r字符編碼?
R的字符編碼使用的gbk,所以讀取時的數據需要設定為gbk,數據庫 ,工作環境,本地 需要保持一致。
其他參考: