特殊字符和 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的主要内容,如果未能解决你的问题,请参考以下文章