R 将文本形式的UTF-8编码转换为字符

R 将文本形式的UTF-8编码转换为字符,r,utf-8,utf-16,R,Utf 8,Utf 16,我有一个字符串,它包含UTF-8编码形式的纯文本数据。范例 utf8 = "#C2#BD" 我正在尝试获取此值的字符。在这种情况下,它将是“½” 如果这是用UTF-16编码的,它应该是“00BD”,我可以将它转换成一个字符,通过 intToUtf8(strtoi('0x00BD')) [1] "½" 但是,我似乎找不到一种使用utf8编码的十六进制“#C2#BD”获取整数值的方法 最终,我想从“C2#BD”达到½。我怀疑这条路是从获得UTF-16开始的,UTF-16可以通过strtoi转换成

我有一个字符串,它包含UTF-8编码形式的纯文本数据。范例

utf8 = "#C2#BD"
我正在尝试获取此值的字符。在这种情况下,它将是“
½

如果这是用UTF-16编码的,它应该是“00BD”,我可以将它转换成一个字符,通过

intToUtf8(strtoi('0x00BD'))
[1] "½"
但是,我似乎找不到一种使用utf8编码的十六进制“#C2#BD”获取整数值的方法


最终,我想从“C2#BD”达到
½
。我怀疑这条路是从获得UTF-16开始的,UTF-16可以通过
strtoi
转换成整数,但我很难理解两者之间的关系。

对于那个例子,这就可以了:

utf8chars <- strsplit(utf8, "#")

# just grab the first entry, and leave off the blank
utf8chars <- utf8chars[[1]][-1]

# Convert the hex to integer
utf8int <- strtoi(paste0("0x",utf8chars))

# Then to raw
utf8raw <- as.raw(utf8int)

# And finally to character
utf8char <- rawToChar(utf8raw)

# On Windows you'll also need this
Encoding(utf8char) <- "utf-8"

utf8chars
utf8chars[[1]][-1]
更适合通用性(“E2-86-92”)