特殊字符和 RODBC

Posted

技术标签:

【中文标题】特殊字符和 RODBC【英文标题】:Special characters and RODBC 【发布时间】:2013-09-05 13:50:52 【问题描述】:

在数据库中,我存储了包含特殊字符(例如“§”)的字符串。 使用命令

sqlQuery()

RODBC 包中的“§”被翻译成“?”。诸如“'”之类的字符也是如此,因为它可以在法语单词中找到。

当然我不能替换每个“?”通过查询后的特殊字符之一。有人对这个问题有想法吗?我在 Windows 7 下工作。

根据要求输出sessionInfo()

R version 2.14.1 (2011-12-22)
Platform: x86_64-pc-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] timeDate_2160.97 gridExtra_0.9.1  reshape2_1.2.2   RODBC_1.3-6      ggplot2_0.9.3.1  plyr_1.8        
[7] Runiversal_1.0.2

loaded via a namespace (and not attached):
 [1] colorspace_1.2-1   dichromat_2.0-0    digest_0.6.3       gtable_0.1.2       labeling_0.1       MASS_7.3-21       
 [7] munsell_0.4        proto_0.3-10       RColorBrewer_1.0-5 scales_0.2.3       stringr_0.6.2      tools_2.14.1    

【问题讨论】:

我认为您需要将odbcDriverConnect() 中的DBMSencoding 设置为数据库编码的任何内容。我想"UTF-8" 值得一开始。 谢谢,我试试看! 设置编码有什么乐趣吗? 我很快就会告诉你——谢谢! @SimonO101 我尝试在 odbcConnect 中正确设置 DBMSencoding 我尝试过:odbcConnect(mydb, uid=myuid,pwd=mypwd,DBMSencoding="UTF-8") 但这并没有解决问题。我不知道如何使用 odbcDriverConnec,但应该传递 odbcConnect 的其他参数。 【参考方案1】:

如果您看到在 R 中使用 sqlSave() 发送到 mysql 的问题,但并非所有数据都流过,这可能是因为特殊字符。关键是要确保两者的字符排序规则都设置为相同。我发现 latin1 效果最好。

【讨论】:

以上是关于特殊字符和 RODBC的主要内容,如果未能解决你的问题,请参考以下文章

http请求特殊字符转码

js判断字符串是不是含有特殊字符和emoji表情

C++特殊字符转义序列

Spring特殊字符处理

URL中的特殊字符

url路径中 符号是特殊字符吗