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

2024-04-16

我一直在尝试从 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)

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

> con <- odbcDriverConnect('DRIVER=mysql;user=root', DBMSencoding='UTF-8')
> sqlQuery(con, 'SELECT * FROM rtest.test')
    str
1 ?????
> library(RMySQL)
Loading required package: DBI
> con <- dbConnect(MySQL(), user='root')
> dbGetQuery(con, 'SELECT * FROM rtest.test')
    str
1 ?????

为了完整起见,这是我的 sessionInfo:

> sessionInfo()
R version 2.15.1 (2012-06-22)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

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

other attached packages:
[1] RMySQL_0.9-3 DBI_0.2-5    RODBC_1.3-6 

感谢@chooban,我发现连接会话使用的是 latin1 而不是 utf8。这是我找到的两个解决方案:

  • 对于 RMySQL,连接后运行查询SET NAMES utf8更改连接字符集。
  • 对于 RODBC,使用以下方式连接CharSet=utf8在 DSN 字符串中。我没能跑SET NAMES通过 ODBC。

这个问题 https://stackoverflow.com/questions/1000636/mysql-odbc-3-51-driver-utf-8-encoding?rq=1为我指明了正确的方向。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中从 MySQL 获取 UTF-8 文本返回“???” 的相关文章

随机推荐

  • 如何在 Windows 上为 ruby​​ 安装 PCAP

    这肯定是一个相对较新的问题 但我仍然陷入困境 我知道有一个简单的解决方案 我已经进行了一些谷歌搜索 但找不到确切的答案 这是我得到的错误 C Ruby193 include ruby 1 9 1 i386 mingw32 gt gem in
  • 将一个 div 置于另一个 div 之上

    我向我的网络应用程序添加了一个登陆页面 因此当它从服务器加载数据时 登陆页面会显示加载图像和描述 div class map view div class loading screen img src img loading boys gi
  • 在 Web.Config 文件外部存储 SMTP

    一段时间以来 我一直将连接和应用程序设置存储在外部文件中 并仅通过 web config 引用该文件 这非常有效 因为它允许我保留单独的连接字符串和应用程序设置 这真的很方便 因为我发现在开发过程中我经常会对 webconfig 进行许多更
  • CreateRemoteThread 32->64 和/或 64->32

    我需要一种在 x64 窗口中 CreateRemoteThread 到 64 和 32 位进程的方法 我已经弄清楚了如何找到目标进程的指令集 如何在目标进程中为汇编雪橇分配内存 并且我几乎已经弄清楚如何处理地址空间随机化 当远程进程的指令集
  • 为什么我的原型函数不返回实例的属性?

    我有一个简单的 JavaScript 对象 函数 myClass x y this x x this y y 和一个原型函数 myClass prototype myfunction function console log this x
  • X.509 证书的 Java 1.7 主题哈希 OpenSSL 1.0+ 兼容

    我已经为此苦苦挣扎了几天 我正在开发一个在嵌入式 Linux 环境中运行的 Java 1 7 应用程序 OpenSSL 不可用 我无法控制设备上操作系统映像中的内容 我需要计算自签名 X 509 证书的主题哈希 生成与 OpenSSL 1
  • MutationRecord.addedNodes 节点列表中返回的节点数(mutationObserver)

    MutationRecord addedNodes 返回 NodeList 其中检测到在我的文档中添加了节点 当我使用 obj appendChild 方法时 mutationObserver 会检测到它并将 MutationRecord
  • Android GCM:了解 XMPP

    我正在尝试使用应用程序在我的 GCM 中实现 XMPP 协议 但即使经过广泛搜索 我也不理解其背后的概念 另外 也许我并不真的需要 XMPP 来完成我想用我的应用程序做的事情 但我喜欢学习东西 让我们以 HTTP 为例 我的应用程序将 he
  • 如何使用 Android xml 形状在圆内画圆?

    我正在尝试为我的应用程序制作一个搜索栏的拇指 并且我希望有一个内圆被另一个更大 半透明 的外圆包围 我正在尝试使用layer list 但我遇到了问题 下面是我的代码
  • Java 自动类型提升

    我引用 Herbert Schildt 的话 JAVA 完整参考第 8 版 第4章 操作员 当您转移时 Java 自动类型提升会产生意想不到的结果byte and short价值观 如你所知 byte and short价值观被提升为int
  • 使用 NumPy 索引数组对 Python 列表进行切片——有什么快速方法吗?

    我有一个常规的list called a 以及一个 NumPy 索引数组b 不 我不可能转换a到 NumPy 数组 有什么方法可以达到与 相同的效果 a b 有效 需要明确的是 这意味着我不想提取每个人int in b由于其性能影响 是的
  • 如何重置测试之间导入的模块

    假设我有一个模块需要在应用程序启动时初始化一次 以传递配置 模块看起来像这样 MyModule js let isInitiazlied const myModule init function isInitiazlied true do
  • 张量流学习中的多元回归输出节点

    我对张量流比较陌生 想使用 tf contrib learn 中的 DNNRegressor 来执行回归任务 但我不想有一个输出节点 而是想要多个 例如十个 如何配置回归器来调整许多输出节点以满足我的需求 我的问题与以下已在 SO 上提出的
  • 如何查看亚马逊 lambda 函数的 console.log 输出

    当你做一个 console log Loading function 在亚马逊 lambda 函数中 它去哪里了 我的设置 API网关 lambda函数nodejs6 10 卷曲https n2tredacted execute api u
  • android跨度点击事件

    好的 这些都是我的问题 我需要使用正则表达式来过滤掉除字母之外的所有内容 然后我需要将找到的单词包含在 word 标签中 有了这个 str str replaceAll pattern 0 现在我正在过滤所有正确的元素 标点符号 数字等 但
  • 催化剂控制器问题

    我刚刚在我的第一个大型项目中使用了催化剂 我想知道我是否按照预期的方式使用了催化剂 我有 Root pm 在该文件中我放置了多个 url 处理程序 每个 url 有一个控制器是最佳实践还是应该考虑分组 Catalyst 的优点之一是它的灵活
  • Rails,将文件上传到服务器时获取文件名

    我在 Rails 3 中使用 AJAX 上传器以及 paper clip 并在此处上传文件 def upload photo Photo create photo gt params file title gt params filenam
  • 有哪些 CSS 属性可以让元素脱离正常流程?

    有哪些 CSS 属性可以让元素脱离正常流程 这些属性可以是 float position absolute 等 这个问题涉及正常流程的所有可能的改变 只有以下属性会影响任何给定元素的正常流程 float right left positio
  • 在共享主机上安装 PHP 扩展

    我需要启用mcrypt https www php net manual en book mcrypt php我的网站上的功能 除了我在共享主机上 运行 Linux 并且显然无权访问php ini文件 似乎确实有安装 PEAR 模块的选项
  • 在 R 中从 MySQL 获取 UTF-8 文本返回“???”

    我一直在尝试从 R 获取 MySQL 数据库中的 UTF 8 文本 我在 OS X 上运行 R 通过 GUI 和命令行都尝试过 其中默认区域设置是 en US UTF 8 并且没有无论我尝试什么 查询结果都显示 对于所有非 ASCII 字符