如何正确编码为啥使用节点请求模块的表情符号?

Posted

技术标签:

【中文标题】如何正确编码为啥使用节点请求模块的表情符号?【英文标题】:How encode in a right why emojis using node request module?如何正确编码为什么使用节点请求模块的表情符号? 【发布时间】:2018-05-15 23:58:12 【问题描述】:

我正在使用 request 模块向 Telegram 机器人发送消息,一切都很好,除了我显示表情符号的方式,它没有很好地打印出来

发布请求:

request.post(
            url: `$this.getApiURL()/$apiName`,
            formData: payload,
            headers: 
                'Content-Type': 'application/json',
                'Charset': 'utf-8',
            
        , (err, resp, body) => );

有效负载包含一条带有一些表情符号的文本消息,例如:

const _emojis = 
            throwingAKiss: '\xF0\x9F\x98\x98',
            tearsOfJoy: '\xF0\x9F\x98\x82',
            smirkingFace: '\xF0\x9F\x98\x8F'
        

但我显示的是这个符号 ð

【问题讨论】:

似乎只使用了您的第一组,因为 ð 在 UTF8 中是 U+00F0 你能试试这个语法吗:"\u1F604"? (apps.timwhitlock.info/emoji/tables/unicode) 你也可以试试:github.com/omnidan/node-emoji 成功了,谢谢。这很奇怪,因为我上面的代码几天前可以工作-_- 在收到您的反馈后,我已添加我的评论作为答案。 【参考方案1】:

作为一种解决方法,您可能会成功使用不同的 unicode 表示法,即:

const smiley = "\u1F604";

对于代码列表,您可以在emoji tables 那里找到。

此外,它可能会通过使用诸如 node-emoji 之类的库(通过 omnidan/node-emoji json file 在后台使用原始表情符号)来减轻一些开发开销。

【讨论】:

以上是关于如何正确编码为啥使用节点请求模块的表情符号?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能在这个 mysql 字段中存储 4 字节的表情符号?

带有自定义表情符号的反应角色

如何在 Postgres 中将 url 编码的表情符号保存为文本(例如“%F0%9F%98%80”)? (罗尔)

如何检查和编码来自 Facebook Messenger 的输入表情符号?

如何清除填充表情符号字符的字体缓存?

AndroidEmoji-htc.ttf 文件中的表情符号图像是如何编码的?