Я запускаю R на компьютере с Windows, который напрямую связан с базой данных PostgreSQL. Я не использую RODBC. Моя база данных закодирована в UTF-8, что подтверждается следующей командой R:
dbGetQuery(con, "SHOW CLIENT_ENCODING")
# client_encoding
# 1 UTF8
Однако когда некоторый текст считывается в R, он отображается как странный текст в R.
Например, в моей базе данных PostgreSQL отображается следующий текст: «Стефан».
После экспорта в R это отображается как: "Stéphane" (é кодируется как é)
При импорте в R я использую команду dbConnect
для установки соединения и команду dbGetQuery
для запроса данных с помощью SQL. Я нигде не указываю кодировку текста ни при подключении к базе данных, ни при выполнении запроса.
Я искал в Интернете и не могу найти прямого решения моей проблемы. Я нашел эту ссылку, но их проблема связана с RODBC, которую я не используя.
Эта ссылка помогает идентифицировать символы, но я не хочу просто выполнить поиск и замену в R... слишком много данных.
Я попытался запустить следующие команды ниже и получил предупреждение.
Sys.setlocale("LC_ALL", "en_US.UTF-8")
# [1] ""
# Warning message:
# In Sys.setlocale("LC_ALL", "en_US.UTF-8") :
# OS reports request to set locale to "en_US.UTF-8" cannot be honored
Sys.setenv(LANG="en_US.UTF-8")
Sys.setenv(LC_CTYPE="UTF-8")
Предупреждение появляется по команде Sys.setlocale("LC_ALL", "en_US.UTF-8")
. Моя интуиция подсказывает, что это проблема, специфичная для Windows, и не возникает с Mac/Linux/Unix.
client_encoding
не является фактической кодировкой, используемой вашей базой данных. Кодировку базы данных можно найти с помощью параметраpsql -l
или команды\l
. - person nwellnhof   schedule 28.01.2014