Twitter Streaming API 使用的官方编码?是UTF-8吗?

问题描述 投票:0回答:3

Twitter 流 API 的官方编码是什么?根据我所看到的,我最好的猜测是 UTF-8,但我想避免做出假设。

我见过的 Twitter 网站上唯一暗示他们使用什么作为官方编码的部分是在这里:

Twitter 不想因为我们使用 UTF-8 或相关 API 客户端使用更长的表示形式而惩罚用户

https://dev.twitter.com/docs/counting-characters

有人有更“官方”的答案吗? 我正在为流 API 编写一个状态机分词器,它做出了某些假设。我最不想遇到的就是 UTF-16 这样的东西。

谢谢! :D

twitter encoding utf-8 streaming
3个回答
6
投票

一个指标是 Twitter 几乎所有内容都使用的 JSON 格式规定(或至少默认为)UTF-8。他们应该还设置一个适当的HTTP标头来表示编码(但我还没有确认这一点)。如果您使用 XML,则 XML 开始标记显式表示编码,即 UTF-8。


0
投票

如果他们说他们使用 UTF-8,那是一个不错的选择。据我所知,UTF-8 非常常见,而 UTF-16 在野外却很少见。

如果您愿意通过测试它们是否支持各种字符来向自己证明这一点,您还可以使用一些聪明的库。其中最好的方法是 Firefox 在加载网页时使用它们来检测网页的编码:http://www-archive.mozilla.org/projects/intl/UniversalCharsetDetection.html


0
投票

目前 twitter API v2 不以 UTF-8 发送数据!

我相信它是 UTF-16,因为在解码 UTF-8 代理项对中的数据时仍然存在。代理对仅在 UTF-16 中出现。

通过 API,我收到了以下字符串:

🎁Crypto Heroez epic giveaway🎁

然而,事情并不是这样的,而是:

\ud83c\udf81Crypto Heroez epic giveaway\ud83c\udf81

\ud83c\udf81
是一对代理对,可翻译为礼物表情符号
🎁

在十六进制代码 UTF-16BE 中,包裹的礼物编码为:D8 3C DF 81,在 UTF-8 中,相同的表情符号编码为 F0 9F 8E 81

其他开发人员也注意到了同样的情况:https://twitterdevfeedback.uservoice.com/forums/930250-twitter-api/suggestions/41152342-utf-8-encoding-of-v2-api-responses

本期撰写于 2020 年 8 月 15 日。但正如我今天 2021 年 9 月 9 日撰写的那样,他们没有传达任何公开信息。 (这就是为什么我想在这里发布这个答案)

© www.soinside.com 2019 - 2024. All rights reserved.