第1个回答 2022-06-13
最近在使用psychopy3时出现一件非常奇怪的事情:运行结束后保存的csv文件中文乱码并错行。
如图所示:instr是指导语变量,image_file是图片的路径。
这是一个很简单的使用程序,我就直接用了psychopy图形化的builder窗口。这个实验用conditions.xlsx文件控制循环。因为不同的trial指导语不一样,在conditions里面写了一些中文的指导语。但在运行完该程序后,获取到的数据里面中文全部乱码而且有错列,例如本来应该两列的东西拼到了一列。但是在运行呈现的时候,展现出来的指导语都是中文,且正确。
结合windows下使用python的经验,我估摸着是windows的编码问题。
到这里基本上已经解决了主要问题。但是后续还会出现这种情况,需要进一步查明为什么utf-8在这里无效。首先一个个排除了.py文件的编码问题,全是utf-8。
解决办法1:
1、找到psychopy安装路径下的experiment文件,例如:PsychoPy3\Lib\site-packages\psychopy\data\experiment.py
2、把里面def saveAsWideText这一行的 encoding = 'utf-8' 改成 encoding = 'utf-8-sig',保存!!
3、再运行就OK了。
这种方法有个 弊端 ,就是如果你不使用Excel而是用R语言处理最终的csv数据,那么在用R读入该文件的时候可能需要指定encoding = "utf-8-sig"。
解决办法2:
安装LibreOffice,并将之修改为.csv文件的默认打开程序,该问题就解决了。弊端:这个办法就是要新安装一个软件。
最终发现根本问题在于使用windows里EXCEL打开这个csv文件时,EXCEL默认给这个文件加了BOM,导致这个原本UTF-8编码的文件显示错乱。
也就是原本UTF-8编码的文件,EXCEL非要用UTF-8-sig的编码去打开,导致显示错乱。