【问题标题】:Emojis in Tweets showing as "?" in MongoDB推文中的表情符号显示为“?”在 MongoDB 中
【发布时间】:2016-10-31 12:22:51
【问题描述】:

目前,我正在收集基于情绪的推文并进行分析。我有带有表情符号的推文,但在收集时,它只是返回一个问号。

例如:

原始推文(在 Twitter 中):

lipton ice tea????

收集后(在 MongoDB 中):

lipton ice tea?

我在 MongoDB 中使用 Twitter 4j Java 包。

【问题讨论】:

  • 我猜是管道中某处的编码问题
  • 你在哪里看到问号?在 mongodb 外壳中?或者当您检索它以显示在您的页面上时?
  • 另外,“lipton”是大写的。这是怎么发生的?
  • @SergioTulentsev 我在本地以 JSON 格式存储我的所有推文,然后存储在 MongoDB 中。在存储到 MongoDB 之前,我曾经使用 JSON 查看器检查 JSON 格式的信息。在那,我找到了问号而不是表情符号。所以,这一切都在 MongoDB 函数之前。
  • 那么也许您的 JSON 查看器无法处理 unicode 表情符号?

标签: java mongodb emoji tweets


【解决方案1】:

MongoDB 默认使用 UTF-8,因此,除非您将其配置为 not,否则它完全能够存储表情符号。

这一次我花了整整一周的时间把头撞到墙上,因为 MongoDB 不会存储拉丁特殊字符。结果发现 MongoDB 工作得很好,它是 Log4j,它没有配置为使用 UTF-8 打印日志,所以我在日志中看到的只是 ???? 而不是 ñáçÜ

如果您像我一样使用 Mongo Shell(Windows 中的<mongo installation dir>/bin/mongo.exe)连接到您的 MongoDB 实例并查询您的数据,您应该能够看到表情符号。这是quick reference for the Mongo Shell

您的问题在于您的 JSON 遮阳板,或您发送到 MongoDB 的字符串的编码。

在 Java 中,您可能希望将 file.encoding 系统属性设置为 UTF-8,以确保您的程序在读取文件、输入流等时使用正确的编码。

【讨论】:

    【解决方案2】:

    如果您使用的是 Robomongo,这是一个 robomongo 问题。

    Robomongo 在表格模式下显示 ? 而不是表情符号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-21
      • 2012-07-22
      • 2016-04-13
      • 1970-01-01
      • 2020-12-04
      • 2021-11-07
      • 2016-02-07
      相关资源
      最近更新 更多