【发布时间】:2018-01-07 23:47:34
【问题描述】:
问题
下面解释的我的问题是:
如何使用 R 来读取包含 HTML 表情符号代码(如 ��)的字符串?
我想:
(1) 在解析的字符串中表示表情符号(例如,作为 unicode 符号:????),OR
(2) 将其转换为等效文本(“:hugging face:” )
背景
我有一个文本消息的 XML 数据集(来自 Android/iOS 应用程序Signal),我正在将其读入 R 以进行文本挖掘项目。数据如下所示,每个文本消息都表示在 sms 节点中:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!-- File Created By Signal -->
<smses count="1">
<sms protocol="0" address="+15555555555" contact_name="Jane Doe" date="1483256850399" readable_date="Sat, 31 Dec 2016 23:47:30 PST" type="1" subject="null" body="Hug emoji: ��" toa="null" sc_toa="null" service_center="null" read="1" status="-1" locked="0" />
</smses>
问题
我目前正在使用 R 的 xml2 包读取数据。但是,当我使用 xml2::read_xml 函数时,我收到以下错误消息:
Error in doc_parse_raw(x, encoding = encoding, base_url = base_url, as_html = as_html, :
xmlParseCharRef: invalid xmlChar value 55358
据我了解,这表明表情符号字符未被识别为有效的 XML。
使用xml2::read_html 函数确实 工作,但删除了表情符号字符。这里有一个小例子:
example_text <- "Hugging emoji: ��"
xml2::xml_text(xml2::read_html(paste0("<x>", example_text, "</x>")))
(输出:[1] "Hugging emoji: ")
这个字符是有效的 HTML -- 谷歌搜索 &#55358;&#56599; 实际上会将其在搜索栏中转换为“拥抱脸”表情符号,并显示与该表情符号相关的结果。
我发现的与此问题似乎相关的其他信息
我一直在搜索 Stack Overflow,但没有找到与此特定问题相关的任何问题。我也无法找到一个表格,在它们所代表的表情符号旁边直接给出 HTML 代码,因此无法在解析之前在一个大循环中将这些 HTML 代码(尽管效率低下)转换为它们的文本等价物数据集;例如,this list 和 its underlying dataset 似乎都不包含字符串 55358。
【问题讨论】:
标签: r xml emoji html-encode xml2