Преобразовать кодировку UTF-8 в текстовой форме в символы - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть строка символов, которая содержит данные в кодировке UTF-8 в виде простого текста. Пример

utf8 = "#C2#BD"

Я пытаюсь получить символ для этого значения. В этом случае это будет "½"

Если бы это было закодировано с использованием UTF-16, это было бы "00BD", я мог бы преобразовать это в символ, который фактически закодирован в utf8, выполнив

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

Однако я не могу найти способ получить целочисленное значение, используя закодированный в utf8 шестнадцатеричный "# C2 # BD".

В конечном итоге я хочу достичь ½ из "# C2 # BD". Я подозреваю, что путь идет от получения UTF-16, который можно преобразовать в целое число по strtoi, но мне трудно понять взаимосвязь между ними.

1 Ответ

1 голос
/ 09 апреля 2019

Это будет сделано для этого примера:

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"

Реальные примеры не должны требовать особых изменений ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...