cómo leer datos en formato utf-8 en R?

Mi sistema: win7 + R-3.0.2.

> Sys.getlocale() [1] "LC_COLLATE=Chinese (Simplified)_People's Republic of China.936;LC_CTYPE=Chinese (Simplified)_People's Republic of China.936;LC_MONETARY=Chinese (Simplified)_People's republic of China.936;LC_NUMERIC=C;LC_TIME=Chinese (Simplified)_People's Republic of China.936" 

Hay dos archivos con el mismo contenido guardado en el bloc de notas de microsoft: uno se guarda como formato ansi, el otro se guarda como formato utf8. Los datos son el nombre de la muerte en M370 Malaysia Airlines. O puede crear el archivo de esta manera.

1) copie los datos en el bloc de notas de microsoft.

 乘客姓名,性别,出生日期HuangTianhui,男,1948/05/28姜翠云,女,1952/03/27李红晶,女,1994/12/09 

2) guárdelo como test.ansi con formato ansi en el bloc de notas.
3) guárdelo como test.utf8 con formato utf-8 en el bloc de notas.

 read.table("test.ansi",sep=",",header=TRUE) #can work fine read.table("test.utf8",sep=",",header=TRUE) #can't work 

Luego, configuro la encoding en utf-8.

 options(encoding="utf-8") read.table("test.utf8",sep=",",header=TRUE,encoding="utf-8") In read.table("test.utf8", sep = ",",header=TRUE,encoding = "utf-8") : invalid input found on input connection 'test.utf8' 

¿Cómo puedo leer el archivo de datos (test.utf8)?
En Python, es tan simple

 rfile=open("g:\\test.utf8","r",encoding="utf-8").read() rfile '\ufeff乘客姓名,性别,出生日期\n\nHuangTianhui,男,1948/05/28\n\n姜翠云,女,1952/03 /27\n\n李红晶,女,1994/12/09' rfile.replace("\n\n","\n").replace("\ufeff","").splitlines() ['乘客姓名,性别,出生日期', 'HuangTianhui,男,1948/05/28', '姜翠云,女,1952/03/27', '李红晶,女,1994/12/09'] 

Python puede hacer tal trabajo mejor que R.

Hago como dice Sathish, problema resuelto un poco, aún quedan algunos.
Descubrí que cuando los datos están en data.frame, no se pueden mostrar correctamente,
cuando los datos son una columna de data.frame, se pueden mostrar correctamente,
lo suficientemente extraño, cuando los datos son una fila de data.frame, no se pueden mostrar correctamente.

enter image description here

enter image description here

Sistema operativo: Windows-7 (64 bits)

Versión R:

 package_version(R.version) [1] '3.0.2' 

Cambie su configuración regional de “chino” a “English_United States.1252”

  Sys.setlocale(category="LC_ALL", locale = "English_United States.1252") Sys.getlocale(category="LC_ALL") [1] "LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252" 

Leer en datos con encoding china

  df_ch <- read.table("test.utf8", sep=",", header=FALSE, encoding="chinese", stringsAsFactors=FALSE ) 

Leer en datos con encoding UTF-8

  df_utf8 <- read.table("test.utf8", sep=",", header=FALSE, encoding="UTF-8", stringsAsFactors=FALSE ) 

En la versión de RStudio 0.98.501

  df_ch$V1[1] [1] "乘客姓å" df_utf8$V1[1] [2] "乘客姓名" df_utf8$V1 [1] "乘客姓名" "HuangTianhui" "姜翠云" "李红晶" "LuiChing" "宋飞飞" [7] "唐旭东" "YangJiabao" "买买提江·阿布拉" "安文兰" "鲍媛华" "边亮京" [13] "边茂勤" "曹蕊" "车俊章" "陈长军" "陈建设" "陈昀" [19] "戴淑玲" "丁立军" "丁莹" "丁颖" "董国伟" "杜文忠" [25] "冯栋" "冯纪新" "付宝峰" "甘福祥" "甘涛" "高歌" [31] "管文杰" "韩静" "侯爱琴" "侯波" "胡偲婠(婴儿)" "胡效宁" 

Mostrar datos Unicode para una fila desde un dataframe

  df_utf8[1,] V1 V2 V3 1    

Mostrar datos chinos para una fila desde un dataframe

 as.character(df_utf8[1,]) [1] "乘客姓名" "性别" "出生日期" as.character(df_utf8[2,]) [1] "HuangTianhui" "男" "1948/05/28" 

La visualización de múltiples columnas de datos con caracteres internacionales se puede realizar convirtiendo el dataframe en una lista y forzando los datos al formato de caracteres.

  df_utf8_ch <- lapply(df_utf8, as.character) df_utf8_ch 

$ V1 1 "乘客" "" HuangTianhui "" 姜翠云 "" 李红晶 "" LuiChing "" 宋飞飞 ""
7 "唐旭东" "YangJiabao" "阿布拉 阿布拉 · 阿布拉" "安文兰" "鲍媛华" "边" ""
[13] "边 茂" "" 曹 蕊 "" 车 俊 "" "陈长军" "陈" "" 陈 昀 ""
[19] "戴淑玲" "丁立军" "丁" "" 丁颖 "" 董国伟 "" 杜文忠 ""
[25] "冯 栋" "冯 纪" "" 付宝峰 "" 甘福祥 "" 甘 "" "高歌" "
[31] "管 文杰" "韩 静" "侯爱琴" "侯波" "胡" 婴儿 "(") "" 胡 "" "
[37] "黄毅" "姜学仁" "姜" "" 焦 "" "焦 文学" "鞠 坤" "
[43] "" "" 黎明 中 "" 李国辉 "" 李洁 "" 李 "" "李文博" "
[49] "李燕" "李宇辰" "李志" "" 李志欣 "" 李智 "" 栗 "" ""
[55] "梁 路 阳" "梁旭阳" "林安南" "林明峰" "刘凤英" "刘金鹏" "
[61] "刘强" "刘如生" "刘顺" "" 柳忠福 "" 楼 宝 "" "卢" "" "
[67] "鹿 建华" "罗伟" "马骏" "马文芝" "毛 土" "" 么 "" "
[73] "蒙 高" "" 孟 "" "孟凡" "" 欧阳 "" "石贤文" "宋春玲"
[79] "宋 坤" "苏 强国" "汤" "" 田军伟 "" 田清君 "" 汪 "" ""
[85] "王春勇" "王纯华" "王丹" "王海涛" "王利军" "王 林诗"
[91] "王 墨 婴儿 (婴儿)" "王守宪" "王淑敏" "王献军" "王永刚"

$ V2 1 "性别" "男" "女" "女" "女" "男" "男" "女" "男" "女" "女" "男" "女" "女" "女" "男" " "
[17] "男" "女" "女" "男" "女" "女" "男" "男" "男" "男" "男" "男" "男" "女" "男" "女" " "
[33] "女" "男" "女" "男" "女" "男" "女" "女" "男" "男" "男" "男" "男" "女" "男" "女" " "
[49] "女" "男" "男" "男" "男" "男" "男" "男" "男" "男" "女" "男" "男" "男" "男" "男" " "
[65] "男" "男" "男" "男" "男" "女" "男" "男" "男" "男" "男" "女" "男" "
$ V3 1 "出生" "" 1948/05/28 "" 1952/03/27 "" 1994/12/09 "" 1969/08/02 "" 1982/03/01 "" 1983/08/03 "" 1988/08/25 "[9]" 1979/07/10 "" 1949/10/20 "" 1951/10/21 "" 1987/06/06 "" 1947/07/19 "" 1982/02/19 "" 1946/03/20 "" 1979/06/06 "[17]" 1956/03/07 "" 1957/08/11 "" 1956/12/07 "" 1971/04/06 "" 1952/04 / 25 "" 1986/10/24 "" 1966/10/26 "" 1964/06/07 "[25]" 1993/03/09 "" 1944/01/06 "" 1986/12/06 "" 1965 / 11/21 "" 1970/01/29 "" 1987/11/16 "" 1979/10/03 "" 1961/05/28 "[33]" 1969/06/24 "" 1979/05/15 " "2011/02/25" "1980/01/01" "1984/06/18" "有待 确认" "1987/04/13" "1983/05/09" [41] "1956/12/17" " 1982/11/07 "" 1980/08/09 "" 1945/12/19 "" 1958/05/18 "" 1987/02/06 "" 1982/12/03 "" 1985/07/16 "[49 ] "1983/07/19" "1987/11/06" "1984/04/14" "1979/05/22" "1973/05/05" "1985/10/26" "1954/03/26" "1984/11/12" [57] "1987/03/27" "1980/05/25" "1949/05/10" "1981/12/26" "1974/08/13" "1938/01 / 22 "" 1968/02/29 "" 1942/05/22 "[65]" 1935/04/21 "" 1981/10/14 "" 1957/03/28 "" 1985/08/20 "" 1981 / 12/25 "" 1957/08/01 "" 1942/08/02 "" 1983/06/15 "[73]" 1950/01/0 1 "" 1974/04/26 "" 1944/08/23 "" 1976/10/12 "" 1988/01/18 "" 1954/04/06 "

  View(df_ch) 

codificación china

  View(df_utf8) 

enter image description here

En RGui (64 bits)

enter image description here

Ver (df_ch)

enter image description here

Ver (df_utf8)

enter image description here

Lo bueno es que tiene todos los datos en formato utf8 para ser utilizados para el análisis de datos adicionales.

Una vez que finalice su análisis, puede cambiar la configuración regional a "chino"

  Sys.setlocale(category="LC_ALL", locale = "chinese") Sys.getlocale(category="LC_ALL") [1] "LC_COLLATE=Chinese (Simplified)_People's Republic of China.936;LC_CTYPE=Chinese (Simplified)_People's Republic of China.936;LC_MONETARY=Chinese (Simplified)_People's Republic of China.936;LC_NUMERIC=C;LC_TIME=Chinese (Simplified)_People's Republic of China.936" 

Algunas funciones que puede necesitar explorar para convertir codificaciones de cadenas de caracteres.

Codificación ()

iconv ()

HTH

Pruebe con un argumento diferente para read.table: fileEncoding :

  read.table("test.utf8", sep = "," , header=TRUE, fileEncoding = "UTF-8")