2015-05-26 2 views
1

У меня проблема с загрузкой данных между кодировкой по умолчанию на машинах Win и nix (соответственно ISO-8859-1 и UTF-8).Текстовое кодирование - отлично в Windows, а не nix

Пример - Окна первого:

library(stringi) 
dummy <- as.character("BØÅS") 
write(dummy, "saveFile") 
getData <- read.table("saveFile", header=F, sep="\t", quote="\"") 

reEncode=function(x) { 
    stri_trans_general(x, "Latin-ASCII") 
} 

enCoded <- apply(getData, 1, reEncode) 
result <- as.data.frame(enCoded) 

В Windows выше производит "BOAS" по желанию.

Теперь переходим к Никс и использовать сохраненный файл:

getData <- read.table("saveFile", header=F, sep="\t", quote="\"") 

    reEncode=function(x) { 
     stri_trans_general(x, "Latin-ASCII") 
    } 

    enCoded <- apply(getData, 1, reEncode) 
    result <- as.data.frame(enCoded) 

Никс дает "B ?? S".

Я считаю, что это проблема с кодировкой read.table, но не удалось выяснить, как заставить nix использовать ISO-8859-1. Какие-либо предложения?

+2

Ubuntu 14, 'Sys.setlocal ('LC_ALL', 'C'); stri_trans_general ("удавы", "Latin-ASCII")' 'дает BOAS' для меня. Можете ли вы поместить вывод 'Sys.getlocale()' в свой пост? –

+0

Привет, Мэтью. Я думаю, что мы идентичны: «LC_CTYPE = C; LC_NUMERIC = C; LC_TIME = C; LC_COLLATE = C; LC_MONETARY = C; LC_MESSAGES = en_GB.UTF-8; LC_PAPER = en_GB.UTF-8; LC_NAME = C; LC_ADDRESS = С; LC_TELEPHONE = С; LC_MEASUREMENT = en_GB.UTF-8; LC_IDENTIFICATION = С» – felixmc

ответ

0
read.table("saveFile", header=F, sep="\t", quote="\"",encoding="latin1")