r - R检测下载的zip文件的文件名编码
问题描述
我使用 Windows 从网上下载了一个文件 zip 文件。
包含的文件具有拉丁字符,因为它们来自墨西哥网站: 这个文件后跟单击“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. 如何正确提取 zipfile 以便正确应用编码。
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"
谢谢。
解决方案
推荐阅读
- c# - EF Core 5 - 过滤器的扩展方法包括
- python - 如何在没有额外数据复制的情况下将大型 numpy 数组流式传输到 s3
- swift - iOS - 为 UIBezierpath 将 lineJoinStyle 设置为 .round 不起作用 (SWIFT)
- database - 如何在 Hive DB 框中的位置 0 处插入项目?
- r - 如果在 r 中嵌套循环
- python - 井字游戏的 CS50 python minimax
- asp.net-core - CancellationToken 与 CancellationChangeToken
- spring-boot - 注销问题并从 ldif fille 获取角色
- xamarin.forms - 将 Skype for Business 与 Xamarin.Forms 集成
- .net - Azure.Identity 还是 Azure.Services.AppAuthentication?