tag:crieit.net,2005:https://crieit.net/tags/ftp/feed
「ftp」の記事 - Crieit
Crieitでタグ「ftp」に投稿された最近の記事
2022-01-02T11:27:06+09:00
https://crieit.net/tags/ftp/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
tag:crieit.net,2005:PublicArticle/15514
2019-10-28T22:45:05+09:00
2019-10-28T22:45:05+09:00
https://crieit.net/posts/FTP
FTPコマンドは半端な入力を補完して実行してくれる?
<h2 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h2>
<p>/^[^S]*FTP[^S]*$/の話なので、他はわからないし、今さら使うこともないのでは、と思わないでもないですが。<br />
FTPであることについては、言いたいことを全て飲み込んでください。お願いします。</p>
<p>あ、あと環境。<br />
OS: macOS High Sierra 10.13.6<br />
ftp: 1.9.4</p>
<h2 id="発端"><a href="#%E7%99%BA%E7%AB%AF">発端</a></h2>
<p>僕ってしょっちゅう<a target="_blank" rel="nofollow noopener" href="https://qiita.com/gm_kou/items/2840a6670dc2e733d00a">sl</a>コマンドだとか<a target="_blank" rel="nofollow noopener" href="https://qiita.com/esplo/items/d87324077a93d405cad6">dc</a>コマンドを実行してしまうんですが、そんな感じでこの間も</p>
<pre><code class="sh">$ ftp
ftp> passiv
</code></pre>
<p>こんな感じでeが<del>押ささんなくて</del>押せなくてEnterしちゃったんですね。<br />
そしたら、</p>
<pre><code class="sh">$ ftp
ftp> passiv
Passive mode on.
ftp>
</code></pre>
<p>ちょっと目を疑った。俺、ちゃんと打ててないよ?<br />
で、ちょっと試してみた。</p>
<pre><code class="sh">$ ftp
ftp> passive
Passive mode on.
ftp> passiv
Passive mode off.
ftp> passi
Passive mode on.
ftp> pass
Passive mode off.
ftp> pas
Passive mode on.
ftp> pa
Passive mode off.
ftp> p
?Ambiguous command
</code></pre>
<p>まじかー。<br />
Invalid じゃなくて Ambiguous なあたり、<br />
これってコマンドの候補が一つに確定したら途中でも実行してくれるってことかなー。つーことはpがダメなのはputがあるからかー。<br />
と想像した。</p>
<p>ということで、</p>
<pre><code class="sh">$ ftp
ftp> ope
(to)
</code></pre>
<p>なるほどこうなるよなー。</p>
<h2 id="みんな知ってんの?"><a href="#%E3%81%BF%E3%82%93%E3%81%AA%E7%9F%A5%E3%81%A3%E3%81%A6%E3%82%93%E3%81%AE%EF%BC%9F">みんな知ってんの?</a></h2>
<p>これって常識なのかな? と疑って隣の人に聞いてみたら、知らなかった。少なくとも自分だけではなかった。<br />
軽くググってみた。<br />
けど、<br />
<em>ftp 補完</em><br />
とかだとファイル名のTab補完の話になるし、<br />
<em>ftp コマンド 途中</em><br />
とかだと通信が途中で切れた場合の挙動の話になるし、<br />
調べ方がよくわからなかった。<br />
うーん。</p>
<h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2>
<p>確定しているし、間違った実行とかはないだろうけど、一応、普通に打った方が良いと思う。</p>
hammhiko