You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中解压含葡萄牙语特殊字符的压缩文件?

在R中解压含葡萄牙语特殊字符的压缩包解决方案

问题背景

尝试用R解压从INEP下载的2010年高等教育普查微数据压缩包,Windows下WinRAR可正常解压,但执行基础R的unzip函数时触发编码错误:

> unzip("data/raw/censo_2010.zip", exdir="data/raw")
Error in unzip("data/raw/censo_2010.zip", exdir = "data/raw") : 
  invalid multibyte string at '<87><c6>o '

文件下载代码:

> download.file("https://download.inep.gov.br/microdados/microdados_censo_da_educacao_superior_2010.zip",
                "data/raw/censo_2010.zip")

查看压缩包内容时,发现文件名中的葡萄牙语特殊字符(如çã)显示为转义序列(\x87\xc6),这是导致unzip函数报错的核心原因。

可行解决方案

方案1:使用archive包替代基础R的unzip

archive包对非UTF-8编码的文件名兼容性更强,无需手动指定编码即可处理:

  1. 安装并加载包:
install.packages("archive")
library(archive)
  1. 执行解压:
archive_extract("data/raw/censo_2010.zip", dir = "data/raw")

方案2:调用Windows系统命令

直接利用系统工具的编码兼容性来解压,适合需要保持脚本可复现的场景:

  • 使用WinRAR命令行(需确保WinRAR安装路径正确):
system('"C:/Program Files/WinRAR/WinRAR.exe" x "data/raw/censo_2010.zip" "data/raw/"')
  • 使用PowerShell内置命令(Windows 10及以上系统默认支持):
system('powershell Expand-Archive -Path "data/raw/censo_2010.zip" -DestinationPath "data/raw/" -Force')

方案3:指定编码参数调用基础R的unzip

如果不想额外安装包,可尝试指定压缩包文件名的实际编码(葡萄牙语常用ISO-8859-1):

unzip("data/raw/censo_2010.zip", exdir="data/raw", encoding = "ISO-8859-1")

注:此方法的有效性取决于压缩包的实际编码格式,部分环境下可能无法完全解决问题。


内容的提问来源于stack exchange,提问作者Gabriel Banaggia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 22:05:16