end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

python3 for win で、UnicodeEncodeError 'cp932' codec can't encode character

disp_cols_str = "\t".join(disp_cols)
print(disp_cols_str)

のような記述を含む python script を以下のようにredirect付きで実行すると windowsはcp932な環境の為、エラーとなる場合があるみたい。

PS C:\Users\end0tknr\tmp\JIKO> ..\python38\python.exe .\aggregate_4.py .\JIKO_SRC_2021 > foo.txt
Traceback (most recent call last):
  File ".\aggregate_4.py", line 214, in <module>
    main()
  File ".\aggregate_4.py", line 30, in main
    aggregate_xlsx(xlsx_path,"")
  File ".\aggregate_4.py", line 100, in aggregate_xlsx
    print(disp_cols_str)
UnicodeEncodeError: 'cp932' codec can't encode character '\ufffd' in position 63: illegal multibyte sequence

なので、以下のように .encode('cp932',"ignore") を追加し、回避。

disp_cols_str = "\t".join(disp_cols)
disp_cols_str = disp_cols_str.encode('cp932',"ignore")
disp_cols_str = disp_cols_str.decode('cp932')
print(disp_cols_str)