概要
ftplibで日本語を扱うまでに結構紆余曲折してしまったので最適解であろうコードを共有します。
結論
from ftplib import FTP
# ※正解: インスタンス生成前に設定を変更する
FTP.encoding = "utf-8"
# あとはお好きに
ftp_instance = FTP(~,~)
# ※よくある間違い: インスタンス生成後に設定変更
# エラー文は変わるが、結局デコードなどを行う必要がありそう
# (ここから正常動作まで持っていったことがないので未検証)
ftp_instance.encoding = "utf-8"
余談
teratailの記事が見つかるまではftplib内のencodingを直接書き換えてました…。
正直、FTPクラスにencoding引数がある方がスマートな気がするんですが、今のとこそういったプルリクもなさそうなのでだれか改善提案をば…!
参考
https://teratail.com/questions/128468
下の記事はぐぐるとわりとトップに出てくるけど間違っているやつ
https://stackoverflow.com/questions/29523067/python-reading-ftp-file-list-with-utf-8