R определить кодировку имени файла для загруженного zipfile - PullRequest
0 голосов
/ 25 октября 2019

Я скачал zip-файл из Интернета, используя Windows.

Содержащиеся в файле файлы имеют латинские символы, как на мексиканском веб-сайте: этот , за которым следует нажатие кнопки "Descargar".

Если я извлекаю файлы с помощью Проводника, они правильно отображают имена.
Например, "códigos_postales \ tabla de códigos.txt" с еще несколькими из них. (таблицы почтовых индексов)

Но если я извлечу его через R с помощью unzip("códigos_postales.zip") (используя RStudio), они будут показаны неправильно.
Например, "c ¢ digos postales \ tabla de c ¢ digos.txt"

Установка кодировок заранее Я пробовал:

zc_list <- unizp("códigos_postales.zip", list = TRUE)
zc_names <- zc_list$Name
Encoding(zc_names) <- "latin1" (also "utf-8" and "Windows-1252") 

Но это не показывает их правильно, и в любом случае это не помогает мне извлечь их.
Более того,угадывая кодировку с помощью:

> guess_encoding(zc_names)
ISO-8859-1
ISO-8859-2

> Encoding(zc_names) <- "ISO-8859-1"  #(or -2)
> zc_names 
...
c¢digos_postales/Tabla de C¢digos Postales.txt

Поэтому я также попытался сначала загрузить их и переименовать позже:

cp_extracted <- unzip("códigos_postales.zip")
for (each_file in cp_extracted) {
    file.rename(each_file, each_file %>% str_replace_all("¢", "ó"))
}

Это не работает, и даже стирает файлы, в течение двухпричины:
+ Есть вложенные файлы и папки, которые имеют латинские символы, поэтому переименование должно применяться только к имени файла.
+ В конечном счете, я определил только этот символ "¢" -> "ó", а неуверен, что могут быть другие. И неправильно идентифицировать неправильные символы, если не по общей кодировке.

У меня есть следующие вопросы:
1. Как правильно извлечь zip-файл, чтобы кодировка применялась правильно.
2. Если это невозможно, и мне нужно их переименоватьКак я могу пройтись по файлам и каталогам и заменить каждый из них соответствующим набором идентифицированных латинских символов.

Язык моей машины:

> Sys.getlocale()
[1] "LC_COLLATE=Spanish_Mexico.1252;LC_CTYPE=Spanish_Mexico.1252;LC_MONETARY=Spanish_Mexico.1252;LC_NUMERIC=C;LC_TIME=Spanish_Mexico.1252"

Спасибо.

...