2017-10-18 92 views
0

我想知道如何處理日語字符查詢到Microsoft Access數據庫。我試圖使用一個查詢來選擇使用R中的RODBC包中的函數odbcQuery使用日語編寫的變量名稱。處理日語字符查詢MS訪問數據庫(在RStudio)

我正在使用Windows。我的RStudio版本是1.1.383,我的Access版本是14.0.7015.1000(32位)。

我認爲[R明白我的查詢中的日文字符,但是當我嘗試實際執行查詢我收到以下錯誤信息:

> query <- "SELECT [LOA-FTD_1_5_1_CALCULATE_LOA_query].月日 FROM [LOA-FTD_1_5_1_CALCULATE_LOA_query]" 
> sqlQuery(channel,query) 
[1] "42000 -3100 [Microsoft][ODBC Microsoft Access Driver] Syntax error in query expression '[LOA-FTD_1_5_1_CALCULATE_LOA_query].<U+6708><U+65E5>'." 
[2] "[RODBC] ERROR: Could not SQLExecDirect 'SELECT [LOA-FTD_1_5_1_CALCULATE_LOA_query].<U+6708><U+65E5> FROM [LOA-FTD_1_5_1_CALCULATE_LOA_query]'" 

這裏,月日被轉換成U + 6708和U + 65E5在錯誤信息中。這些是兩個字符的UTF-8編碼,所以我猜這個字符串是用UTF-8編碼發送到MS Access的,但MS Access無法讀取它? MS Access甚至是執行查詢過程的一部分嗎?

所以它必須是一個編碼問題,其中RStudio和MS Access不相互理解。當我看到與日文字符類似的問題時,問題通常是在表中顯示值。這裏的變量名是日文的,所以查詢根本不起作用。

我很迷茫,所以我願意接受任何想法或評論。

謝謝。

+0

嘗試將'DBMSencoding'設置爲'「UTF-8」'? (例如'odbcConnect(「abc」,uid =「123」,pwd =「123」,DBMSencoding =「UTF-8」)') –

+0

感謝您的快速回答! 我正在使用函數odbcConnectAccess。我已經嘗試過,沒有運氣。我發現某處將控制面板中的非Unicode程序的語言更改爲日語可能很有趣。在我做完這些之後,我桌子上的日文字符不再顯示爲?但完全是亂碼。 例如東日本變成'†•「。 所以編碼很可能不是Unicode。 我已經嘗試了很多不同的可能性下選項DBMSendcoding(Shift-JIS,Windows-1255 ...),但無濟於事。 – JDoe

+0

好的,所以我應該補充一點,我嘗試閱讀整個表格,而不使用包含日語字符的查詢。上面的註釋描述了RStuido中這個全表查詢的輸出。 – JDoe

回答

0

我在this post找到了適合我的答案。

訣竅(至少在我的情況下)是在任何數據導入之前將區域設置設置爲Japanese_Japan.932。 以下是此命令的代碼:

Sys.setlocale("LC_ALL", locale = "Japanese_Japan.932") 

然後我輸入我的數據從Access,而無需改變編碼和日語字符在所得到的數據幀正確地顯示。而且,這允許瞭解查詢中的日語字符。