将文本形式的UTF-8编码转换为字符
Convert UTF-8 encoding in text form to characters
我有一个字符串,其中包含 UTF-8 编码形式的纯文本数据。示例
utf8 = "#C2#BD"
我正在尝试获取此值的字符。在这种情况下,它将是“½
”
如果这是使用 UTF-16 编码的,它应该是“00BD”,我可以通过
将其转换为实际编码为 utf8 的字符
intToUtf8(strtoi('0x00BD'))
[1] "½"
但是我似乎找不到使用 utf8 编码的十六进制“#C2#BD”获取整数值的方法。
最终我想从“#C2#BD”到达½
。我怀疑获取 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"
真实的例子应该不需要太多的改变...
我有一个字符串,其中包含 UTF-8 编码形式的纯文本数据。示例
utf8 = "#C2#BD"
我正在尝试获取此值的字符。在这种情况下,它将是“½
”
如果这是使用 UTF-16 编码的,它应该是“00BD”,我可以通过
将其转换为实际编码为 utf8 的字符intToUtf8(strtoi('0x00BD'))
[1] "½"
但是我似乎找不到使用 utf8 编码的十六进制“#C2#BD”获取整数值的方法。
最终我想从“#C2#BD”到达½
。我怀疑获取 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"
真实的例子应该不需要太多的改变...