savemat生成的.mat文件在包含中文字符时无法打开,但loadmat能够:

$ python -c 'from scipy.io import *; savemat("tmp.mat", {"test": "你好"}); print(loadmat("tmp.mat")["test"])' && matlab -nodesktop -r 'load tmp; exit'
['你好']

To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.

Error using load
Can't read file /home/tmp.mat.

有什么想法,我可以改变savemat输出一些MATLAB可以打开的东西,或者改变MATLAB设置,这样我就可以读取文件?

最佳答案

根据savematsave的文档,我认为savemat生成的.mat文件格式较旧(MATLAB称之为-v6,不支持Unicode(在-v7中引入)。
如果从.mat切换到像savemath5py这样的HDF5写入程序,您应该能够保存较新格式的hd5storage文件。或者,可以始终将字符串存储为字节数组,并在以后解释它们。
另请参见:Creating a .mat file of v7.3 in pythonStrings in HDF5

10-08 02:08