【问题标题】:Twitter Extraction: Special CharactersTwitter 提取:特殊字符
【发布时间】:2014-07-22 21:30:53
【问题描述】:

我正在尝试提取一些用户的所有推文用于我的研究。 但是特殊字符被替换为“?”象征。我该如何克服这个问题?

例子:

如果推文是,

“如果ωe给ɑ一点爱,也许ωe可以改变ωorld。”

它被存储为

“如果?e给予?一点爱,也许?e可以改变?orld。”

知道如何解决这个问题吗?

更新:

我处理错了。所以我改变了代码来处理 UTF-8 格式。

PrintStream out = new PrintStream(System.out, true, "UTF-8");

out.println(rl_tweets);

现在它打印为

“如果ωe给É'一点爱,也许ωe可以改变ωorld。”

【问题讨论】:

  • 看来你想用编码玩ɑround。
  • 这是希腊字母 omega (Ω) 的小写版本。 This may help.

标签: java twitter tweets


【解决方案1】:

有一些特殊的方法可以对网站中的每个字母进行编码,以便浏览器了解要在屏幕上打印哪个字符。 您可能必须解析代码并将字符更改为您用来显示它的程序可以理解的内容(因为并非所有程序都理解这种编码,这似乎是您的问题)。 因此,例如,您可以制作一个解析器,将 ñ 之类的内容更改为对应于 html 中的 ñ 的内容,使其为该字符的特定编码。 您可以在此处找到奇怪字符的 html 代码列表: http://www.ascii.cl/htmlcodes.htm

这就是我在编写爬虫程序和解析网页时所做的。 我希望这会有所帮助。

-丹尼尔。

【讨论】:

  • 问题是,我无法控制它。 Twitter API 进行解析并以这种方式将结果返回给我。所以我现在只有一个“?”特点。我无法将其转换为任何东西。我使用 getUserTimeline 来提取它
【解决方案2】:

你用什么程序来获取数据?

让我们看一下包含这些字符的推文 - https://twitter.com/edent/status/473752539289366528

如果我们调用 API https://api.twitter.com/1.1/statuses/show/473752539289366528.json

我们将此作为响应(截断)....

HTTP/1.1 200 OK

content-type: application/json;charset=utf-8
status: 200 OK

{
  "created_at": "Tue Jun 03 09:06:21 +0000 2014",
  "id": 473752539289366500,
  "id_str": "473752539289366528",
  "text": "@test If ωe give ɑ little love , maybe ωe can change the ωorld.",
  ....

如您所见,API确实通过特殊字符。它以 UTF-8 的形式传递它们。您需要确保您的代码预期 - 并且可以操作 - Unicode 字符串。

【讨论】:

  • 正如你所提到的,我处理错了。但现在即使将其作为 UTF-8 处理后,我仍然得到不正确的结果。
  • 你现在看到了什么结果?
  • 我已经用更新的结果更新了问题
猜你喜欢
  • 2023-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
相关资源
最近更新 更多