MongoDB中的Emoji未能正确保存

3

我正在将Twitter和Instagram上的表情符号保存到我的MongoDB数据库中。但是当我显示从数据库中提取的数据时,表情符号会出现损坏,像这样 ❤️����������☀️��。

在保存数据到MongoDB期间,我需要做些不同的事情吗?我是MongoDB的新手。我已经了解到表情符号使用UTF8-MB4编码,但MongoDB仅支持UTF8。

2个回答

9

UTF8是MongoDB默认支持的编码方式,支持所有字符(变长字节),包括utf8-mb4(有关详细信息,请参见下文)。您可能没有在上传数据到MongoDB之前将数据转换为UTF-8格式,或者在检索数据时没有将数据视为UTF-8格式。

只是为了澄清,在MySQL中的原始实现“utf8”仅适用于最多3个字节,而名为“utf8-mb4”的MySQL实现实际上长达4个字节(与官方RFC建议一致)。因此在MySQL中的utf8-mb4与MongoDB中的UTF8相同。


嗨Jaco,我已经检查了数据库,现在表情符号被正确地存储了,但是当它们出现在网页上时,表情符号仍然显示为损坏的。 - yatish hejmadi
我甚至在HTML头部添加了<meta charset="utf-8">,但它们仍然显示为乱码。 - yatish hejmadi
你是如何从MongoDB中检索数据的? - Alex
嗨Jaco,很抱歉回复晚了,我正在使用查询Content.where(_where_content(type)).order_by(:content=>:desc).limit(@page_size[type.to_sym]).to_a检索数据,然后将其转换为哈希形式并使用js显示。 - yatish hejmadi
@Yati - 你解决这个问题了吗? - Hobbyist
是的,现在它对我起作用了,问号已经消失了,我能够看到图标。 - yatish hejmadi

0

在MongoDB中,UTF-8自然支持表情符号表达


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接