看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 新手(沒寫過程式,R 是我的第一次) [問題敘述]: 我利用公司電腦(英文版作業系統)爬中文網站 利用Sys.setlocale(locale='cht')已經可以在R上面看到中文 也能正確匯入匯出繁體中文的csv (感溫感溫) 我現在要跑排程將資料直接送入我的SQL Server 不過發現原先在R上面的中文 這次送進SQL Server後又變亂碼啦 這次是長這樣的亂碼 (#無檔案時使用: 他會自己建立varchar的table) aE?°|P¯f?U?|ao?O?I 或是這樣的亂碼 (#更新檔案時使用: 先建好nvarchar的table) Nªº¶W°ª¶¥1 qÄv 再麻煩大家了 謝謝!! [程式範例]: 下方的無檔案時使用跟更新檔案時使用會擇一使用 library(RODBC) odbcconnect <- odbcConnect("MY_DB","trusted_connection=true") values <- paste0( " article[ , c('", paste(colnames(article),collapse="','") ,"')] ", collapse="" ) sqlSave(odbcconnect, article, tablename = "subjectinfo_temp", rownames = F) #無檔案時使用 sqlSave(odbcconnect, article, tablename = "subjectinfo_temp", rownames = F, append = T) #更新檔案時使用 odbcClose(odbcconnect) [環境敘述]: R version 3.3.2 (2016-10-31) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows Server >= 2012 x64 (build 9200) locale: [1] LC_COLLATE=Chinese (Traditional)_Taiwan.950 LC_CTYPE=Chinese (Traditional)_Taiwan.950 LC_MONETARY=Chinese (Traditional)_Taiwan.950 [4] LC_NUMERIC=C LC_TIME=Chinese (Traditional)_Taiwan.950 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] RODBC_1.3-14 xml2_1.1.1 loaded via a namespace (and not attached): [1] tools_3.3.2 Rcpp_0.12.9 [關鍵字]: RODBC, SQL Server, 亂碼 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.199.64 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1487658174.A.8C2.html
cywhale: odbcConnect參數DBMSencoding設設看 02/22 08:59
augustana: 設過惹 BIG5, UTF-8, WINDOWS-1252, gbk都亂碼Q__Q 02/22 10:23
cywhale: 如果用sql server driver? odbcDriverConnect('driver= 02/22 10:47
cywhale: {SQL Server};server=...;...) 我自己這樣用沒遇過亂碼 02/22 10:48
augustana: 請問這時候的server就是我之前odbcconnect取好的那個 02/22 12:00
augustana: "MY_DB"嗎 他說不存在或access_denied 02/22 12:01
augustana: odbcDriverConnect('driver={SQL Server};server="MY_D 02/22 12:02
augustana: B";trusted_connection=true') 我是這樣寫 02/22 12:02
augustana: 我server改成原始的server後成功惹~~ 不過還是亂碼Q__Q 02/22 13:49
augustana: 我在odbcDriverConnect上加DBMSencoding也沒有用 然後 02/22 14:05
augustana: 匯出csv要特別加fileEncoding = 'UTF-8'才會成功 02/22 14:06
augustana: 更正 加了DBMSencoding後會變NULL 不管是是不是driver 02/22 14:10
cywhale: 我覺得會不會是sql server設定而不是R連接sql server問題 02/22 16:18
augustana: 我現在也有這感覺XD 我找到答案再更新 02/22 16:26
augustana: 我剛看惹SQL設定 但他跟正常的中文表所有屬性都一樣 02/23 14:38
augustana: 感覺應該是英文作業系統的關係 在R到SQL中間出了問題 02/23 14:39
obarisk: 去找系統odbc驅動程式設定看看 02/25 06:52
augustana: 如果是說ODBC資料來源管理員的話 是我設的 可是我看不 02/28 17:36
augustana: 來應該檢查哪邊 02/28 17:36
augustana: 我後來是直接存csv, 再讓SQL去讀csv(encoding設utf8) 07/26 16:15