Мы можем проверить шестнадцатеричное кодирование символа с помощью функции Encoding
:
x <- c("•", "…", "–", "’", "‘", "”", "“")
y <- x
Encoding(y) <- "bytes"
> x
[1] "•" "…" "–" "’" "‘" "”" "“"
> cat(y)
\x95 \x85 \x96 \x92 \x91 \x94 \x93
Затем мы можем включить шестнадцатеричные коды в ваши gsub
:
gsub("•", "*", "A big dot •")
gsub("[\x95\xE2\x80\xA2]", "*", "A big dot •")
gsub("…", "...", "Some small dots …")
gsub("[\x85\xE2\x80\xA6]", "...", "Some small dots …")
gsub("–", "-", "A long-dash –")
gsub("[\x96\xE2\x80\x93]", "-", "A long-dash –")
gsub("’", "'", "A curly single quote ’")
gsub("[\x92\xE2\x80\x99]", "'", "A curly single quote ’")
gsub("‘", "'", "A curly single quote ‘")
gsub("[\x91\xE2\x80\x98]", "'", "A curly single quote ‘")
gsub("”", '"', "A curly double quote ”")
gsub("[\x94\xE2\x80\x9D]", '"', "A curly double quote ”")
gsub("“", '"', "A curly double quote “")
gsub("[\x93\xE2\x80\x9C]", '"', "A curly double quote “")
Также с stri_trans_general
из stringi
:
library(stringi)
stri_trans_general(x, "ascii")
# [1] "•" "..." "-" "'" "'" "\"" "\""
Кажется, это не работает для "•"
, но работает для остальных.
Обратите внимание, что я только что проверил эторешение на Windows, а не на других ОС.