Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

ftplibで日本語を扱う最適解

More than 1 year has passed since last update.

概要

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

toriiico
広く浅くなwebエンジニア
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away