是SQLite将unicode表示为美国国旗

时间:2014-02-17 16:32:30

标签: ruby-on-rails unicode utf-8 sqlite

在Rails应用程序中,我在类型列中的行中有以下unicode字符:text

\U0001F64F\U0001F1FA\U0001F1F8- 

当我通过调用模块名称在rails控制台中输出它时:Module.find(id).text

它将它打印成美国国旗:

enter image description here

有人能解释这里发生了什么吗?我已经读过SQLite使用UTF-8和UTF-16来编码文本,但我不确定这是由于SQLite还是其他原因。

1 个答案:

答案 0 :(得分:1)

文本中的第一个字符是U + 1F64F PERSONED HANDS,根据Unicode代码表中的注释“可以表示悲伤或遗憾”和“可以表示恳求”。你不会在大多数字体中找到它,所以在渲染中,你可能会看到一个小矩形或什么都没有。

接下来的两个是U + 1F1FA区域指示符符号字母U和U + 1F1F8区域指示符符号字母S.相关code chart说明了这些字符:“这些字符可以成对使用来表示区域代码。在一些表情符号实现中,可以通过替代方式识别和显示某些对;例如,一个实现可能会识别F + R并显示它 与代表法国国旗的符号组合。“

所以由渲染软件将它们显示为“美国”字符对或显示标志性的美国国旗。大多数程序都不会执行这些操作,但会将它们视为未知数据。