R中的表情符号[UTF-8编码]

Woz*_*oza 4 twitter encoding r utf-8 emoji

我正在尝试对 R 进行表情符号分析。我在有表情符号的地方存储了一些推文。

这是我要分析的推文之一:

> tweetn2
[1] "Programme du week-end: \xed\xa0\xbd\xed\xb2\x83\xed\xa0\xbc \xed\xbe\xb6\xed\xa0\xbc 
    \xed\xbd\xbb\xed\xa0\xbc\xed\xbd\xbb\xed\xa0\xbc \xed\xbd\xbb\xed\xa0\xbc\xed\xbd\xbb"
Run Code Online (Sandbox Code Playgroud)

确保我有“UTF-8”:

> Encoding(tweetn2)
[1] "UTF-8
Run Code Online (Sandbox Code Playgroud)

" 现在当我试图识别某些字符时,它无法正常工作

> grepl("\\xed",tweetn2)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

或者

> grepl("xed",tweetn2)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

但似乎表情符号“\xed\xa0\xbd”不是“UTF-8”编码,因为我在编写时收到一条错误消息:

> str(tweetn2)
Error in str.default(tweetn2) : invalid multibyte string, element 1
Run Code Online (Sandbox Code Playgroud)

我通过使用 iconv() 函数和“ASCII”编码找到了一种解决方案:http :
//www.r-bloggers.com/emoticons-decoder-for-social-media-sentiment-analysis-in-r/

但我想继续使用“UTF-8”进行分析,因为它适用于法语特殊字母(à、é、è、ê、ë、û 等。)

那么你知道我怎样才能超越它吗?

谢谢

nj_*_*nj_ 5

如所示,该字符串是无效的 UTF-8。您拥有的是使用 UTF-8 编码的 UTF-16。所以\xED\xA0\xBD是高代理U + D83D, -并且\xED\xB2\x83是低代理U + DC83

如果您应用神奇的High,Low -> Codepoint 公式,您将得到实际的代码点:

(0xD83D - 0xD800) * 0x400 + 0xDC83 - 0xDC00 + 0x10000 = 0x1F483
Run Code Online (Sandbox Code Playgroud)

你会看到这是舞者表情符号。不幸的是,我没有给你建议,因为我对 R 不太熟悉。但我可以说你肯定想让自己处于对这些数据进行双重编码的位置!希望能帮助您朝着正确的方向前进。

  • 如何从 High surrogate as \xED\xA0\xBD 到 U+D83D?我也找不到从 U+D83D 到 \xED\xA0\xBD 的方法。 (2认同)