记Windows和macOS默认文件编码不同导致报错

我的主力机是macOS,前几个版本的rimetool都是用mac开发

今天加入了新伙伴主力是Windows,发现rimetool刚使用就报错,关于编码gbk的报错


(base) J:\rime>rimetool --input-path J:\rime\rimetool-master\rimetool-master\examples\contacts.vcf --tool vcf 
Traceback (most recent call last):
  File "\\?\E:\Anaconda\Scripts\rimetool-script.py", line 33, in <module>
    sys.exit(load_entry_point('rimetool==0.1.6.2', 'console_scripts', 'rimetool')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\Anaconda\Lib\site-packages\rimetool\main.py", line 30, in main
    vcf.main(args.input_path, args.output_path)
  File "E:\Anaconda\Lib\site-packages\rimetool\utils\vcf.py", line 20, in main
    for line in infile:
                ^^^^^^
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa0 in position 422: illegal multibyte sequence

我俩沟通一番,猛然想起Windows是默认gbk编码,macOS是默认UTF-8编码,而rimetool目前是没有写死文件的读取和输出是用哪种编码进行的

这就导致我在macOS上用rimetool输出的文件是UTF-8格式,这份文件被他下载到Windows后使用rimetool读取,报错编码错误

后续修bug,把读取和输出编码都写死成某一个就行

参考资料