У меня проблема с преобразованием символов Юникода в R. Я следую этому подходу, но stri_unescape_unicode
из библиотеки stringi
не возвращает правильный значение в некоторых случаях. Позвольте мне показать пример, где правильным значением должно быть слово Tomáš:
library(stringi)
test <- "Tom<U+00E1><U+009A>"
test <- gsub("<U\\+(....)>", "\\\\u\\1", test)
stri_unescape_unicode(test)
[1] "Tomá\u009a"
Однако, если š представлен U+ 0161 вместо U+009A, все работает как положено:
test2 <- "Tom<U+00E1><U+0161>"
test2 <- gsub("<U\\+(....)>", "\\\\u\\1", test2)
stri_unescape_unicode(test2)
[1] "Tomáš"
Теперь моя проблема в том, что у меня есть большой вектор character
с многочисленными элементами, такими как test
и stri_unescape_unicode
, которые не работают с некоторыми персонажами, такими как <U+009A>
здесь. Мой вопрос:
- Есть ли способ преобразовать
<U+009A>
с помощьюstri_unescape_unicode
или любого другого метода? - В качестве альтернативы, есть ли способ автоматически заменить юникоды в случае сбоя
stri_unescape_unicode
? То есть в моем примере"Tom<U+00E1><U+009A>"
должно стать"Tom<U+00E1><U+0161>"
?