Python中pyreadr读取RData文件如何设置使用latin编码
pyreadr读取RData指定latin编码的可行解决方案
方案1:配置pyreadr全局编码参数(推荐,无额外依赖)
pyreadr虽然没有在read_r函数中提供encoding入参,但提供了模块级的全局编码配置项,直接修改该配置即可生效,不需要改动源码:import pyreadr # 全局指定解码编码为latin1,优先级高于默认的utf-8 pyreadr.custom_encoding = "latin1" # 正常读取目标文件 r_data = pyreadr.read_r('Input/myFile.RData')该配置对后续所有
pyreadr.read_r调用都生效。方案2:升级pyreadr后使用方案1
0.4.0之前的旧版本pyreadr没有开放custom_encoding配置项,先执行以下命令升级到最新稳定版即可:pip install --upgrade pyreadr升级完成后按照方案1配置编码即可正常读取文件。
方案3:在R侧预先转换文件编码
如果不方便调整Python侧的包配置,可以先在R环境中将原文件转存为UTF-8编码版本,再回到Python侧读取:# R控制台执行 # 加载原latin编码的RData文件 load("Input/myFile.RData") # 将工作空间所有对象转码后保存为UTF-8编码文件 save(list = ls(), file = "Input/myFile_utf8.RData", encoding = "UTF-8")转码完成后,Python侧直接读取转存后的
myFile_utf8.RData,不需要额外调整编码配置就能正常加载。
报错中提到的
0xb0字节是latin1编码里的度数符号(°),不属于UTF-8编码的合法起始字节,因此触发解码错误,使用latin1编码读取完全匹配该文件的字符编码规则。
内容的提问来源于stack exchange,提问作者userLx
相关产品推荐
相关产品推荐

