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<-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,數據庫 ,工作環境,本地 需要保持一致。

 

其他參考:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM