MozillaZine.jp フォーラム https://forums.mozillazine.jp/ |
|
非UTF-8環境でのマルチバイトファイル名でのファイルの保存 https://forums.mozillazine.jp/viewtopic.php?f=2&t=14838 |
ページ 1 / 1 |
作成者: | tenforward [ 2014年6月12日(木) 15:31 ] |
記事の件名: | 非UTF-8環境でのマルチバイトファイル名でのファイルの保存 |
bugzillaに書こうかと思いましたが、まずはここに。 いつからだったかはっきり忘れましたが、Linux 環境での firefox 25 くらい以降、少なくともここしばらく 30, 29, 28 辺りだと LANG=ja_JP.eucJP と設定した環境でダウンロードファイルや表示しているページの保存を日本語ファイル名で保存しようとすると、 * 設定したLANG環境では文字化けしたファイル名での中身のあるファイル (おそらく UTF-8 で保存) * 設定したLANG環境での正規のファイル名でサイズが 0 のファイル の2つが出来上がります。おそらく日本語以外のマルチバイトでも同じになると思いますが、試してはいません。 コード: $ ls -l 合計 114,688 -rw------- 1 karma users 110,879 6月 12日 15:28 ?????鴻?? -rw-r--r-- 1 karma users 0 6月 12日 15:28 テスト これはinvalidな設定ですが、LANG=C で firefox を起動して、日本語ファイル名で保存しても 2 つファイルは出来上がりますので検証はできます。 関連するバグ報告とかありますかね? |
作成者: | tenforward [ 2014年6月12日(木) 15:46 ] | ||
記事の件名: | Re: 非UTF-8環境でのマルチバイトファイル名でのファイルの保存 | ||
UTF-8なエンコードのファイル名でもEUC-JPでも表示してくれそうなファイルマネージャ的ソフトでみると上記の例だとこんな感じに見えます。(ファイル添付します)
|
作成者: | WADA [ 2014年6月12日(木) 18:05 ] |
記事の件名: | Re: 非UTF-8環境でのマルチバイトファイル名でのファイルの保存 |
Bug summary contains "file name", OS=Linuxで検索してヒットしたバグの中に、 「Linux default encoding(env LANG) is en_US.UTF-8, still is utf-8」なLinuxで、 UTF-8なページでファイルをダウンロードすると、 HTTPヘッダーで、ファイル名をRFC2047エンコーディングなど無しで、このケースだとGBKのバイナリーで送ってくるので、ファイル名が化ける、という「Bug 844038」がありました。 > Content-Disposition: attachment; filename="????.7z"; で、????がGBKバイナリー で、$ LANG=zh_CN.GB18030 firefox とやったら、以下のようになった、と言っています。 > Test it again, this time download dialog can display file correctly, > and also right in download panel, > but on file system, it still "????.7z", and nautilus file manager warn it "invalid encoding". Firefoxは、Web Consoleで(あるいはBrowser Consoleで)、HTTPヘッダーを見せてくれるはずですが、どのようなHTTPヘッダーが返ってきていますか? |
作成者: | WADA [ 2014年6月12日(木) 18:26 ] |
記事の件名: | Re: 非UTF-8環境でのマルチバイトファイル名でのファイルの保存 |
tenforward さんが書きました: LANG=ja_JP.eucJP コード: -rw------- 1 karma users 110,879 6月 12日 15:28 ?????鴻?? -rw-r--r-- 1 karma users 0 6月 12日 15:28 テスト どちらが先に作られたかは不明ですが、 (1) ?????鴻??(UTF-8バイナリー)で、LANG=ja_JP.eucJPなファイルシステムにファイル作成を依頼して、そこにダウンロード、 (2) Firefoxの内部では、UTF-8⇒eucJPの変換が入って、eucJPな「テスト」を入手できるが、 ?????鴻??(UTF-8バイナリー)という、LANG=ja_JP.eucJPなファイルシステム上のファイル名を eucJPの「テスト」に変えるのに失敗、 といった順かな。 ファイルI/Oをトレースできるモニターツール(WinだとProcess Monitor, MacだとOpenSnoopとか)で見てみると、何をしているかがもう少し見えてくるかもしれません。 |
作成者: | tenforward [ 2014年6月12日(木) 19:51 ] |
記事の件名: | Re: 非UTF-8環境でのマルチバイトファイル名でのファイルの保存 |
ありがとうございます。 元々日本語のファイルでないもの (例えばOSSのtar.gzファイルをhttpで取得するような場合) でも、保存ダイアログでファイル名を日本語に変えたような場合でも同じようになりますので、844038 は関係ないように思いますが、いかがでしょう? 逆に日本語ファイル名を送ってきていても、ascii でファイル名付けて保存すれば問題ありませんし。(保存ダイアログにデフォルトで入るファイル名はちゃんと読めますし) I/Oのトレースも考えてみますが、それだったらさっさとbugzillaに登録しちゃった方が楽かな (^_^;) クリティカルで使えないという程の問題ではないので。 |
作成者: | tenforward [ 2014年8月01日(金) 15:26 ] |
記事の件名: | Re: 非UTF-8環境でのマルチバイトファイル名でのファイルの保存 |
bugzilla に報告しました (英語が怪しい ) >> https://bugzilla.mozilla.org/show_bug.cgi?id=1047223 |
ページ 1 / 1 | All times are UTC + 9 hours |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |