【问题标题】:What unicode character (emoji) it was?它是什么 unicode 字符(表情符号)?
【发布时间】:2021-09-14 04:04:58
【问题描述】:

我的文本文件中有那个字符串:├░┬č┬Ź┬ć

已知的是表情符号或至少是一些由长度为 2 或 4 的 javascript 字符串创建的代理字符/字符

由于某种原因,它最终以这种形式出现。 (它是从utf8_general_ci的mysql数据库和带有字符集latin1_swedish_ci的node.js/mysql2/connection获得的)

我怎样才能找到它是什么表情符号?有可能吗?

其他例子:

├░┬č┬ĺ┬Ž ├░┬č┬ś┬ł ├░┬č┬ą┬Á

用 JS 编写的算法是最好的选择。

【问题讨论】:

  • 这似乎是损坏的数据。
  • @DanyalSandeelo 之类的,在从数据库获取数据和保存文件时,由于错误使用正确的字符编码而损坏。
  • 你知道来自代码页吗?
  • @mplungjan 我只知道 mysql 数据库是 utf8_general_ci 并且连接时的字符集(通过 node.js 'mysql2' lib)是 latin1_swedish_ci
  • @ElSajko 这不是加密。数据已损坏,因此很难将其转换回来。数据是正确的,它只是您查看它的编码。如果不进行试验,很难说什么。

标签: javascript unicode emoji surrogate-pairs


【解决方案1】:

它是 double mojibake 如下所示python 代码 sn-p(对不起,我不能给出 Javascript 等效项):

print('? ? ? ?'.
      encode('utf-8').decode('latin1').  # 1st mojibake stage
      encode('utf-8').decode('cp852')    # 2nd mojibake stage
    )                                    # ├░┬č┬Ź┬ć ├░┬č┬ĺ┬Ž ├░┬č┬ś┬ł ├░┬č┬ą┬Á

可能的修复(虽然预防胜于治疗):

print('├░┬č┬Ź┬ć ├░┬č┬ĺ┬Ž ├░┬č┬ś┬ł ├░┬č┬ą┬Á'.
      encode('cp852').decode('utf-8').       # fix 2nd mojibake stage
      encode('latin1').decode('utf-8')       # fix 1st mojibake stage
    )                                        # ? ? ? ?

仅供参考,这些表情符号是(CodePoint 列包含 Unicode (U+hhhh) 和 UTF-8 字节;Description 列包含括号中的代理对):

Char CodePoint                      Description
---- ---------                      -----------
?   {U+1F346, 0xF0,0x9F,0x8D,0x86} AUBERGINE               (0xd83c,0xdf46)
?   {U+1F4A6, 0xF0,0x9F,0x92,0xA6} SPLASHING SWEAT SYMBOL  (0xd83d,0xdca6)
?   {U+1F608, 0xF0,0x9F,0x98,0x88} SMILING FACE WITH HORNS (0xd83d,0xde08)
?   {U+1F975, 0xF0,0x9F,0xA5,0xB5} OVERHEATED FACE         (0xd83e,0xdd75)

【讨论】:

  • 哇,你做得很好!非常感谢,我已接受答案。
猜你喜欢
  • 1970-01-01
  • 2018-09-10
  • 2011-03-02
  • 1970-01-01
  • 2017-05-27
  • 1970-01-01
  • 2020-06-23
  • 2015-05-09
相关资源
最近更新 更多