Ответ 1
Это раздражающая "функция" R в Windows. Единственное решение, которое я нашел до сих пор, - это временно и программно переключить ваш язык на соответствующий, необходимый для декодирования script данного текста. Итак, в приведенном выше случае вы использовали бы японский язык.
## This won't work on Windows
str <- "ていただけるなら"
Encoding(str) #returns "UTF-8"
write.table(str, file="c:/chartest.txt", quote=F, col.names=F, row.names=F)
## The following should work on Windows - first grab and save your existing locale
print(Sys.getlocale(category = "LC_CTYPE"))
original_ctype <- Sys.getlocale(category = "LC_CTYPE")
## Switch to the appropriate local for the script
Sys.setlocale("LC_CTYPE","japanese")
## Now you can write your text out and have it look as you would expect
write.table(str, "c:/chartest2.txt", quote = FALSE, col.names = FALSE,
row.names = FALSE, sep = "\t", fileEncoding = "UTF-8")
## ...and don't forget to switch back
Sys.setlocale("LC_CTYPE", original_ctype)
Вышеприведенные два файла, которые вы видите на этом скриншоте. В первом файле показаны кодовые точки Юникода, который не то, что вы хотите, а второй показывает глифы, которые вы обычно ожидаете.
До сих пор никто не мог объяснить мне, почему это происходит в R. Это не неизбежная особенность Windows, поскольку Perl, как я упоминаю в this post, как-то обходит вопрос.