tag:crieit.net,2005:https://crieit.net/tags/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89/feed 「文字コード」の記事 - Crieit Crieitでタグ「文字コード」に投稿された最近の記事 2022-01-02T11:27:06+09:00 https://crieit.net/tags/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89/feed tag:crieit.net,2005:PublicArticle/17909 2022-01-02T11:27:06+09:00 2022-01-02T11:27:06+09:00 https://crieit.net/posts/opts-utf8-off-in-ftp FTP で日本語ファイルが文字化けする場合の対処法 (FFFTP, WinSCP) <p>FTP でサーバにアップロードされている日本語ファイルを扱う際に注意すべき事項をメモしておきます。</p> <p>……そもそも基本的に日本語を含むマルチバイト文字をアップロードするのは宜しくないのですが、誤ってアップロードしてしまった際などの対処法として。</p> <p>ちなみに一度アップロードしたファイルはサーバによってはクライアントとサーバの文字コードの違いで正しく認識できず、名前の変更や削除すらできなくなってしまうこともあるので注意。</p> <h2 id="FFFTP"><a href="#FFFTP">FFFTP</a></h2> <p>まず FFFTP の場合。</p> <p>登録されている接続情報を選択して「設定変更」。</p> <p><a href="https://crieit.now.sh/upload_images/03532d6f05581eebaed1869f1376e85661d10cae6e13d.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/03532d6f05581eebaed1869f1376e85661d10cae6e13d.jpg?mw=700" alt="FFFTP で UTF-8 での転送をオフにする方法" /></a></p> <p>「拡張」タブを開き、「接続時にホストに送るコマンド」のテキストエリアに以下の文字列を入力。</p> <pre><code>OPTS UTF8 OFF </code></pre> <p>これで接続しなおすと文字化けしなくなります。</p> <h2 id="WinSCP"><a href="#WinSCP">WinSCP</a></h2> <p>次に WinSCP の場合。</p> <p><a href="https://crieit.now.sh/upload_images/277405ec94482f9de10d36d0e616301961d10cc95832c.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/277405ec94482f9de10d36d0e616301961d10cc95832c.jpg?mw=700" alt="WinSCP で UTF-8 での転送をオフにする方法" /></a></p> <p>セッションを繋ごうとした際に、右下の「設定」のドロップダウンから「設定」を選択。</p> <p>「高度なサイトの設定」ダイアログの中で、左のツリーから「環境」下の「FTP」を選択。</p> <p><a href="https://crieit.now.sh/upload_images/ae05d931526c5c5b222c469add3a111261d10cfc3d733.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ae05d931526c5c5b222c469add3a111261d10cfc3d733.jpg?mw=700" alt="WinSCP で UTF-8 での転送をオフにする方法" /></a></p> <p>「ログイン コマンドの送信」のテキストエリアで FFFTP と同様に次のコマンドを入力。</p> <pre><code>OPTS UTF8 OFF </code></pre> <p>これでOK。</p> <h2 id="備考"><a href="#%E5%82%99%E8%80%83">備考</a></h2> <p>原因としては、サーバが対応していないのにクライアント側が UTF-8 で転送しようとすると文字化けを起こす模様。</p> <p>しかも Windows10 はデフォルトで UTF-8 で転送するよう</p> <pre><code>OPTS UTF8 ON </code></pre> <p>のコマンドを送るとのことので、より現象に遭遇しやすくなっているものと思われます。</p> <p>この辺で面倒になるので、サーバにはマルチバイト文字のファイル名は止めていただきたいのですよね。あと、スペースや特殊な記号を含むファイル名。</p> <h2 id="余談 (WinSCP)"><a href="#%E4%BD%99%E8%AB%87+%28WinSCP%29">余談 (WinSCP)</a></h2> <p>今回は効果がなかったですが別の方法を。</p> <p><a href="https://crieit.now.sh/upload_images/b423c134d9938fa8c6f29702ce200dba61d10d050fe06.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b423c134d9938fa8c6f29702ce200dba61d10d050fe06.jpg?mw=700" alt="WinSCP で UTF-8 での転送をオフにする方法" /></a></p> <p>「高度なサイトの設定」ダイアログで「環境」を選択、「サーバ環境」の中の「ファイル名を UTF-8 でエンコード」を「オフ」にしても今回は効果がありませんでした。</p> <p>……項目の名前的に同じことをやっているような気がするのですが、何か差があるのでしょうか。</p> <h2 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h2> <h3 id="FFFTP"><a href="#FFFTP">FFFTP</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://ponnao.com/?p=13858">[サーバ覚書]FTPソフトで日本語ファイルが文字化けする場合の対処 | ponnao-clip</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://www.sthark.com/spt/7769/">日本語ファイルが文字化けする場合の対処方法(FFFTP) - スターク ホスティング</a></li> </ul> <h3 id="WinSCP"><a href="#WinSCP">WinSCP</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://faq.cpi.ad.jp/faq/show/101?category_id=35&site_domain=default">日本語のファイル名やディレクトリ名は利用できますか。 | よくあるご質問(FAQ) | CPIサポート</a></li> </ul> <h3 id="WinSCP (今回は効果がなかった)"><a href="#WinSCP+%28%E4%BB%8A%E5%9B%9E%E3%81%AF%E5%8A%B9%E6%9E%9C%E3%81%8C%E3%81%AA%E3%81%8B%E3%81%A3%E3%81%9F%29">WinSCP (今回は効果がなかった)</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://www.3ryu-engineer.work/winscp-utf8/">簡単!WinSCPでファイル名が文字化けする原因と対応方法 - 3流なSEのメモ帳</a></li> </ul> <h3 id="Windows10 での仕様"><a href="#Windows10+%E3%81%A7%E3%81%AE%E4%BB%95%E6%A7%98">Windows10 での仕様</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://social.technet.microsoft.com/Forums/ja-JP/0ae7f6a7-531c-4162-9870-fe7dfde23e82/winows101239112398ftp124671251012531124892345534892261781239825391?forum=win10itprogeneralJP">Winows10でのFTPコマンド実行時の振る舞いについて</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://teratail.com/questions/123844">FTP - ftpでファイルを自動ダウンロードしたい|teratail</a></li> </ul> <p>Windows 10 ではデフォルトで <code>OPTS UTF8 ON</code> (UTF-8 でファイル名を扱う) コマンドをサーバに送信してしまうため、対応していないサーバでは今回のような現象が発生してしまうようです。</p> <h3 id="RFC2640"><a href="#RFC2640">RFC2640</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://www.ietf.org/rfc/rfc2640.html">https://www.ietf.org/rfc/rfc2640.html</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://docs.grapecity.com/help/secureftp-dotnet-4/Dart.Ftp~Dart.Ftp.Ftp~Encoding.html">Encoding プロパティ (Ftp)</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://www.ibm.com/docs/ja/zos/2.2.0?topic=ftp-utf-8-enabled-control-connection">UTF-8 使用可能制御接続 - IBM Documentation</a></li> </ul> <p>サーバが UTF-8 をサポートしている場合は <code>OPTS UTF8 ON</code> を送るよう RFC2640 で定義されている模様。</p> <h3 id="サーバ側 (proftpd)"><a href="#%E3%82%B5%E3%83%BC%E3%83%90%E5%81%B4+%28proftpd%29">サーバ側 (proftpd)</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="http://www.dt8.jp/cgi-bin/adiary/adiary.cgi/0580">Windowsエクスプローラで文字化けしないFTPサーバ - 色々日記(ざ・めも)</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://www.connectworks.jp/blog/ftp%E3%81%A7%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91/">FTPでの文字化け | コネクトワークス</a></li> </ul> arm-band