使用基于 UTF-8 十六进制代码的字符

Working with characters based on their UTF-8 hex codes

我正在研究可以读取用户短信并将其导出到 csv 文件,然后他们可以下载的东西。这些消息是从第三方 Web 界面检索的——我实际上是在使用 js 来获取每条消息的 html 并根据需要进行编译。每条消息的内容都被添加到一个变量中,一旦收集到所有消息,该变量就会被提供给一个新的 Blob,然后下载它。

我遇到的问题是,在此 Web 界面中,表情符号表示为图像,而不是字符。因此,将包含表情符号的消息写入文件时,结果如下:

"Blah blah blah <img height="18px" width="18px" class="emoji adjustedSpriteForMessageDisplay spriteEMOJI sprite-1f612" data-textvalue="%F0%9F%98%92" src="assets/blank.gif">"

现在,从这个图像中,我们可以得到 2 个可行的值:

UTF-8 十六进制值

F09F9892

和Unicode代码点(我可能指的是错误的,我对编码了解不多)。

U+1f612

现在,我想做的是采用这些值中的任何一个(以效果更​​好的为准),并将其作为角色本身写入 csv 文件。因此,当在文本编辑器或其他工具中查看 csv 文件时,它会显示为

虽然我什至不知道从哪里开始。也许它就像在字符值周围抛出一些语法一样简单,但我无法从 google 中得到任何东西,因为我对编码不够熟悉,不知道 Google 的内容。

CSV文件格式没有字符编码信息,所以Excel通常假定为ASCII。

https://en.wikipedia.org/wiki/Comma-separated_values#General_functionality

Microsoft Excel mangles Diacritics in .csv files?

我建议在从网页上抓取数据时对其进行预处理,而不是事后从字符串中提取数据。

然后您可以使用 decodeURIComponent() 来解码百分比编码的字符串:

decodeURIComponent('%F0%9F%98%92')

将其与 jQuery 结合以访问 data-textvalue-属性:

decodeURIComponent($(element).data('textvalue'))

我在 JSFiddle 上创建了一个简单的示例。 由于某种原因,表情符号无法在我的浏览器的结果屏幕中正确呈现,但这是字体问题。使用 DOM 检查器查看结果(或将文本复制到不同的应用程序)时,结果显示为笑脸。