gpt4 book ai didi

r - 将字节编码转换为unicode

转载 作者:行者123 更新时间:2023-12-01 11:37:56 25 4
gpt4 key购买 nike

我可能没有在标题中使用适当的语言。如果这需要编辑,请随意。

我想用 "byte" 替换 unicode 字符的字符串并将它们转换回 unicode。假设我有:

x <- "bi<df>chen Z<fc>rcher hello world <c6>"

我想回去:

"bißchen Zürcher hello world Æ"

我知道如果我可以将其转换为这种形式,它将按需要打印到控制台:

"bi\xdfchen Z\xfcrcher \xc6"

我试过:

gsub("<([[a-z0-9]+)>", "\\x\\1", x)
## [1] "bixdfchen Zxfcrcher xc6"

最佳答案

这个怎么样:

x <- "bi<df>chen Z<fc>rcher hello world <c6>"

m <- gregexpr("<[0-9a-f]{2}>", x)
codes <- regmatches(x, m)
chars <- lapply(codes, function(x) {
rawToChar(as.raw(strtoi(paste0("0x", substr(x,2,3)))), multiple = TRUE)
})

regmatches(x, m) <- chars

x
# [1] "bi\xdfchen Z\xfcrcher hello world \xc6"

Encoding(x) <- "latin1"
x
# [1] "bißchen Zürcher hello world Æ"

请注意,您不能通过将“\x”粘贴到数字前面来创建转义字符。 “\x”实际上根本不在字符串中。这就是 R 选择在屏幕上表示它的方式。这里使用 rawToChar() 把一个数字变成我们想要的字符。

我在 Mac 上对此进行了测试,因此我必须将编码设置为“latin1”才能在控制台中看到正确的符号。仅使用这样的单个字节不是正确的 UTF-8。

关于r - 将字节编码转换为unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25468716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com