首页  >  文章  >  数据库  >  为什么在 R 中从 MySQL 检索 UTF-8 文本时会看到“??????\”字符?

为什么在 R 中从 MySQL 检索 UTF-8 文本时会看到“??????\”字符?

Linda Hamilton
Linda Hamilton原创
2024-11-03 18:05:29188浏览

Why am I seeing

R 中 MySQL 的 UTF-8 文本检索:解码“??????”

从 R 中检索 UTF-8 编码文本MySQL 数据库导入 R 有时会导致“??????”人物。要解决此问题,请考虑以下事项:

1.验证数据库编码

确保使用适当的字符集和排序规则定义数据库表。例如,在 MySQL 中:

CREATE TABLE test (str VARCHAR(10)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2。设置连接编码

在 R 中建立数据库连接时,指定正确的字符编码。

RODBC:

con <- odbcDriverConnect('DRIVER=mysql;user=root', CharSet='utf8')

RMySQL:

先连接,然后运行:

dbConnect(MySQL(), user='root')
dbSendQuery(con, 'SET NAMES utf8')

3.转换字符编码

检索结果后,将字符串列的字符编码转换为UTF-8。

RODBC:

res <- sqlQuery(con, 'SELECT * FROM rtest.test')
res$str <- iconv(res$str, "UTF-8-Mac")

RMySQL:

res <- dbGetQuery(con, 'SELECT * FROM rtest.test')
res$str <- as.character(res$str, encoding = 'UTF-8')

附加说明:

  • 确保默认系统区域设置设置为 UTF-8 .
  • 对于 RMySQL,使用 dbSendQuery 设置字符编码对所有后续查询都有效。
  • iconv 也可以用于将字符串转码为 UTF-8,但其行为可能会因平台。

以上是为什么在 R 中从 MySQL 检索 UTF-8 文本时会看到“??????\”字符?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn