Ms access 在MS access数据库查询中处理日文字符(在RStudio中)

Ms access 在MS access数据库查询中处理日文字符(在RStudio中),ms-access,encoding,character-encoding,rstudio,rodbc,Ms Access,Encoding,Character Encoding,Rstudio,Rodbc,我想知道如何处理Microsoft Access数据库查询中的日语字符。我正在尝试使用一个查询来选择用日语编写的变量名,该查询使用R中RODBC包中的函数odbcQuery 我正在使用Windows。我的RStudio版本是1.1.383,Access版本是14.0.7015.1000(32位) 我认为R理解我查询中的日文字符,但当我尝试实际执行查询时,我得到以下错误消息: > query <- "SELECT [LOA-FTD_1_5_1_CALCULATE_LOA_query].

我想知道如何处理Microsoft Access数据库查询中的日语字符。我正在尝试使用一个查询来选择用日语编写的变量名,该查询使用R中RODBC包中的函数odbcQuery

我正在使用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]'"
查询sqlQuery(频道,查询) [1] “查询表达式“[LOA-FTD_1_5_1_计算_LOA_查询]”中存在42000-3100[Microsoft][ODBC Microsoft Access驱动程序]语法错误。” [2] “[RODBC]错误:无法SQLExecDirect'选择[LOA-FTD_1_5_1_计算_LOA_查询]。从[LOA-FTD_1_5_1_计算_LOA_查询]” 这里,,月日 已在错误消息中转换为U+6708和U+65E5。这是两个字符的UTF-8代码,所以我猜字符串是用UTF-8编码发送给MS Access的,但是MS Access无法读取它?MS Access是否是执行查询过程的一部分

因此,这一定是一个编码问题,RStudio和MS Access不能相互理解。当我研究日文字符的类似问题时,问题通常是在表中显示值。这里的变量名是日文的,因此查询根本不起作用

我完全迷路了,所以我愿意接受任何想法或意见


谢谢。

我在中找到了一个适合我的答案

诀窍(至少在我的例子中)是在任何数据导入之前将locale设置为
Japanese_Japan.932
。 以下是此命令的代码:

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

然后,我从Access导入了数据,而无需更改编码,结果数据框中正确显示了日语字符。此外,这样可以理解查询中的日语字符。

我在中找到了一个适合我的答案

诀窍(至少在我的例子中)是在任何数据导入之前将locale设置为
Japanese_Japan.932
。 以下是此命令的代码:

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

然后,我从Access导入了数据,而无需更改编码,结果数据框中正确显示了日语字符。此外,这允许理解查询中的日语字符。

尝试将
DBMSencoding
设置为
“UTF-8”
?(例如,
odbcConnect(“abc”,uid=“123”,pwd=“123”,DBMSencoding=“UTF-8”)
)感谢您的快速回答!我正在使用odbcConnectAccess函数。我试过这个,运气不好。我在某个地方发现,将控制面板中非Unicode程序的语言更改为日语可能会很有趣。在我这样做之后,我表格中的日语字符不再显示为???但完全是胡言乱语。例如東日本 变成“†•”。所以编码很可能不是Unicode。我在DBMSendcoding选项(Shift JIS,windows-1255…)下尝试了很多不同的可能性,但都没有成功。好的,我应该补充一点,我尝试了读取整个表,没有使用包含日语字符的查询。上面的注释在RStuido中描述了整个表查询的输出。是否尝试将
DBMSencoding
设置为
“UTF-8”
?(例如,
odbcConnect(“abc”,uid=“123”,pwd=“123”,DBMSencoding=“UTF-8”)
)感谢您的快速回答!我正在使用odbcConnectAccess函数。我试过这个,运气不好。我在某个地方发现,将控制面板中非Unicode程序的语言更改为日语可能会很有趣。在我这样做之后,我表格中的日语字符不再显示为???但完全是胡言乱语。例如東日本 变成“†•”。所以编码很可能不是Unicode。我在DBMSendcoding选项(Shift JIS,windows-1255…)下尝试了很多不同的可能性,但都没有成功。好的,我应该补充一点,我尝试了读取整个表,没有使用包含日语字符的查询。上面的注释在RStuido中描述了整个表查询的输出。