見出し画像

solidpythonでUnicodeDecodeError: 'cp932'~

最近OpenScadを使い始めたんですが、ちょっと引っかかることがあったので備忘録的に残しておきます。
根本解決には至っていませんが、対処法を残しておきます。

solidpython

PythonのコードでOpenScadの.scadファイルを出力できるライブラリ。

エラー内容

> python .\sample.py
<class 'solid.objects.linear_extrude'>
Traceback (most recent call last):
  File "C:\Users\scop\sample.py", line 73, in <module>
    solid.scad_render_to_file(base, "output_base.scad")
  File "C:\Users\scop\AppData\Roaming\Python\Python312\site-packages\solid\solidpython.py", line 518, in scad_render_to_file
    return _write_code_to_file(rendered_string, filepath, out_dir, include_orig_code)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\scop\AppData\Roaming\Python\Python312\site-packages\solid\solidpython.py", line 547, in _write_code_to_file
    rendered_string += sp_code_in_scad_comment(calling_file)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\scop\AppData\Roaming\Python\Python312\site-packages\solid\solidpython.py", line 593, in sp_code_in_scad_comment
    pyopenscad_str = Path(calling_file).read_text()
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\scop\.pyenv\pyenv-win\versions\3.12.0\Lib\pathlib.py", line 1029, in read_text
    return f.read()
           ^^^^^^^^
UnicodeDecodeError: 'cp932' codec can't decode byte 0x88 in position 433: illegal multibyte sequence

途中までは普通に実行できていたんですが、エンコード系のエラーが出ました。調べてもあんまり出てこなかったので解決方法が分からず苦労しました。

対処法

wslを使う。

なにが起きてるのか全然分からんのですけど、windowsのファイルがutf-8じゃないせいで悪さしているのかもしれません。
wslなら普通に同じファイルを実行できたのでそうなのかも。

もし同じ状況の方がいたらwslで実行すれば解決するかもしれません。
また、windowsで実行できる方法をご存じの方がいましたらご教示いただけますと幸いです。


この記事が気に入ったらサポートをしてみませんか?