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

问题描述 投票:0回答:1

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

utf8 = "#C2#BD"

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

如果这是使用UTF-16编码的,那就是“00BD”,我可以把它转换成一个实际编码成utf8的字符

intToUtf8(strtoi('0x00BD'))
[1] "½"

但是我似乎找不到使用utf8编码的十六进制“#C2#BD”获取整数值的方法。

最终我想从“#C2#BD”到达½。我怀疑那里的路径是从strtoi获得可转换为整数的UTF-16,但我很难理解两者之间的关系。

r utf-8 utf-16
1个回答
1
投票

这将为该示例执行此操作:

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"

真实的例子不应该对变化有太多要求......

© www.soinside.com 2019 - 2024. All rights reserved.