Python调用R出现“UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb2” 问题
使用python的rpy2进行调用R
import os
os.environ['R_HOME'] = "C:\\Users\\aohan\\Project\\iris\\software\\R-4.2.1"
if "R-4.2.1" not in os.environ['path']:os.environ["PATH"] = "./software/R-4.2.1/bin/x64" + ";" + os.environ["PATH"]
from rpy2 import robjectsrobjects.r('''library(org.Hs.eg.db)''')
执行 robjects.r('''library(org.Hs.eg.db)''') 这句时报错:
Traceback (most recent call last):File "C:\app\python3.9\lib\asyncio\coroutines.py", line 124, in corores = func(*args, **kw)File "C:\Users\aohan\Project\iris\flow-gui\test\rcode\test1.py", line 36, in testrobjects.r('''library(org.Hs.eg.db)''')File "C:\app\python3.9\lib\site-packages\rpy2\robjects\__init__.py", line 459, in __call__res = self.eval(p)File "C:\app\python3.9\lib\site-packages\rpy2\robjects\functions.py", line 203, in __call__return (super(SignatureTranslatedFunction, self)File "C:\app\python3.9\lib\site-packages\rpy2\robjects\functions.py", line 126, in __call__res = super(Function, self).__call__(*new_args, **new_kwargs)File "C:\app\python3.9\lib\site-packages\rpy2\rinterface_lib\conversion.py", line 45, in _cdata = function(*args, **kwargs)File "C:\app\python3.9\lib\site-packages\rpy2\rinterface.py", line 815, in __call__raise embedded.RRuntimeError(_rinterface._geterrmessage())File "C:\app\python3.9\lib\site-packages\rpy2\rinterface_lib\_rinterface_capi.py", line 439, in _geterrmessageres = _string_getitem(res, 0)File "C:\app\python3.9\lib\site-packages\rpy2\rinterface_lib\_rinterface_capi.py", line 285, in _string_getitemres = conversion._cchar_to_str(File "C:\app\python3.9\lib\site-packages\rpy2\rinterface_lib\conversion.py", line 136, in _cchar_to_strs = ffi.string(c).decode(encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 33: invalid start byte
调试时发现,在"C:\app\python3.9\lib\site-packages\rpy2\rinterface_lib\conversion.py"文件中
这两句decode解码,默认encoding方式是"utf-8",但是当R语言返回的信息中,如这里它返回的是"不存在叫'org.Hs.eg.db'这个名字的程辑包",信息中有中文就导致编码不正常,如下修改即可解决:
def _cchar_to_str(c, encoding: str) -> str:# TODO: use isString and installTrChartry:s = ffi.string(c).decode(encoding)except Exception as e:s = ffi.string(c).decode('GBK')return sdef _cchar_to_str_with_maxlen(c, maxlen: int, encoding: str) -> str:# TODO: use isString and installTrChartry:s = ffi.string(c, maxlen).decode(encoding)except Exception as e:s = ffi.string(c, maxlen).decode("GBK")return s
Python调用R出现“UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb2” 问题相关推荐
- python 读取数据出现UnicodeDecodeError:: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid contin
之前写程序时也出现过类似错误,每次解决了到第二次遇见又忘了具体方法,这次记录一下. 一.字符编码问题 先介绍一下字符编码问题 1.ASCLL与GB2312 由于计算机是美国人发明的,因此,最早只有12 ...
- python 读取数据出现UnicodeDecodeError:: ‘utf-8‘ codec can‘t decode byte 0xc8 in position 0: invalid contin
解决方法: 读取时也可以用二进制模式打开的文件(包括模式参数中的'rb')将内容作为字节对象,而不进行任何解码. 然后使用line.decode('utf-8',errors = 'ignore')解 ...
- 报错:UnicodeDecodeError:: ‘utf-8‘ codec can‘t decode byte 0xc8 in position 0: invalid contin
python读取数据时出现:UnicodeDecodeError:: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid conti ...
- blender导入c4d obj模型出现UnicodeDecodeError:: ‘utf-8‘ codec can‘t decode byte 0xc8 in position 0:
错误描述 blender导入c4d obj模型出现UnicodeDecodeError:: 'utf-8' codec can't decode byte 0xc8 in position 0 bal ...
- (已解决)pycharm调试报错-UnicodeDecodeError:‘utf-8‘ codec can‘t decode byte 0xe8 in position 1023
背景 使用pycharm在调试项目的时候,出现文章标题的错误. r = r.decode('utf-8')UnicodeDecodeError: 'utf-8' codec can't decode ...
- Python报错SyntaxError: (unicode error) ‘utf-8‘ codec can‘t decode byte 0xc5 in position 0: invalid
python报错:SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xc5 in position 0: invalid co ...
- python读取字符报错:‘utf-8‘ codec can‘t decode byte 0xbd in position 2: invalid start byte
python读取字符报错:'utf-8' codec can't decode byte 0xbd in position 2: invalid start byte 原因 解决方法 原因 utf-8 ...
- 【Python 3】SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xcf in position 0
Django中views.py文件添加含中文代码后报错. 问题描述 用Django命令自动生成代码文件,结果在加入含有中文的代码后报错,将中文改为英文后能够成功运行. 原因 文件存储的格式是ANSI, ...
- python报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x97 in position的解决方法
在编写代码时,调用python解释器中的模块时出现 UnicodeDecodeError: 'gbk' codec can't decode byte 0x97 in position 20: ill ...
最新文章
- django 1.2.1更新后 关于CSRF token missing or incorrect的问题
- Docker仓库搭建
- Python 中的 os 模块常见方法?
- opengl学习笔记(三)
- sencha touch 2与phonegap 2.0结合 打包web app
- 【原创】大叔问题定位分享(4)Kafka集群broker节点从zookeeper上消失
- php将word转化成html,phpword转html
- scada系统集成_MES与EPR进行系统集成的实际案例-系统接口、交互数据分析
- u盘写保护终极修复方法
- windows重置net use或者SMB协议
- 怎么调用计算机任务管理器,任务管理器怎么打开
- Web爬虫|入门实战之实习僧(编码反爬)
- 对物联网的感悟_物联网心得体会总结
- 安装Pytorch后torch.cuda.is_available()返回False问题解决
- 【C语言】qsort()函数详解
- dB dBm dBFs 理解
- 2019智能手表推荐_2020年买什么智能手表合适?
- Java雷电游戏要准备什么_Java 雷电游戏(未完成)
- 阿里巴巴java开发手册-泰山版 下载
- CSS 行内元素设置高度