相关疑难解决方法(0)

在R中从MySQL获取UTF-8文本返回"????"

我试图从R中获取MySQL数据库中的UTF-8文本.我在OS X上运行R(通过GUI和命令行尝试),默认语言环境是en_US.UTF-8,没有无论我尝试什么,查询结果显示"?" 对于所有非ASCII字符.

我尝试过设置options(encoding='UTF-8'),DBMSencoding='UTF-8'当通过ODBC连接时,Encoding(res$str) <- 'UTF-8'在获取结果后设置,以及每个的'utf8'变体,都无济于事.从命令行运行查询mysql客户端正确显示结果.

我完全难过了.任何想法为什么它不工作,或我应该尝试的其他事情?

这是一个相当小的测试用例:

$ mysql -u root
mysql> CREATE DATABASE test;
mysql> USE test;
mysql> CREATE TABLE test (str VARCHAR(10)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO test (str) VALUES ('?????');
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
+-----------------+
| str             |
+-----------------+
| ?????      |
+-----------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

使用RODBC和RMySQL查询R中的表显示"?????" 对于str列:

> con <- …
Run Code Online (Sandbox Code Playgroud)

mysql odbc r utf-8 character-encoding

28
推荐指数
3
解决办法
1万
查看次数

R如何处理Unicode/UTF-8?

如果我写

`?` <- function(a,b)   (a-b)/a 
Run Code Online (Sandbox Code Playgroud)

U+394只要它包含在反引号中,我就可以包括在内.(相比之下,? <- function(a,b) (a-b)/a失败了unexpected input in "?".)显然,R解析UTF-8或Unicode或类似的东西.任务进展顺利,例如评估也是如此

`?`(1:5, 9:13)
Run Code Online (Sandbox Code Playgroud)

.我也可以评估?(1:5, 9:13).

最后,如果我定义了类似的东西,winsorise <- function(x, ?=.05) { ... }那么λ(U+3bb)不需要用反引号"引入"R.然后我可以毫无问题地打电话winsorise(data, .1).


在R的文档中我唯一能提到的unicode就在我脑海中.理解它的人能否更好地向我解释 - 当R需要`理解赋值给♔时,"引擎盖下"会发生什么,但是一旦分配了can(a,b,c)就能解析?

unicode r utf-8

7
推荐指数
1
解决办法
2183
查看次数

标签 统计

r ×2

utf-8 ×2

character-encoding ×1

mysql ×1

odbc ×1

unicode ×1