― MozillaZine.jp フォーラムは Mozilla 製品に関する情報交換の場です ―



All times are UTC + 9 hours

返信する
ユーザー名:
件名:
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: ON
BBCode を無効にする
フォントサイズ:
フォントカラー
スマイリーを無効にする
URL を自動的にパースしない
ユーザエージェントを表示する
認証コード
KCaptcha by Nikita_Sp
   

トピックのレビュー - 非UTF-8環境でのマルチバイトファイル名でのファイルの保存
作成者 メッセージ
  記事の件名:  Re: 非UTF-8環境でのマルチバイトファイル名でのファイルの保存  引用付きで返信する
bugzilla に報告しました (英語が怪しい :cry: ) >> https://bugzilla.mozilla.org/show_bug.cgi?id=1047223
投稿記事 Posted: 2014年8月01日(金) 15:26
  記事の件名:  Re: 非UTF-8環境でのマルチバイトファイル名でのファイルの保存  引用付きで返信する
ありがとうございます。

元々日本語のファイルでないもの (例えばOSSのtar.gzファイルをhttpで取得するような場合) でも、保存ダイアログでファイル名を日本語に変えたような場合でも同じようになりますので、844038 は関係ないように思いますが、いかがでしょう? 逆に日本語ファイル名を送ってきていても、ascii でファイル名付けて保存すれば問題ありませんし。(保存ダイアログにデフォルトで入るファイル名はちゃんと読めますし)

I/Oのトレースも考えてみますが、それだったらさっさとbugzillaに登録しちゃった方が楽かな (^_^;) クリティカルで使えないという程の問題ではないので。
投稿記事 Posted: 2014年6月12日(木) 19:51
  記事の件名:  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とか)で見てみると、何をしているかがもう少し見えてくるかもしれません。
投稿記事 Posted: 2014年6月12日(木) 18:26
  記事の件名:  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ヘッダーが返ってきていますか?
投稿記事 Posted: 2014年6月12日(木) 18:05
  記事の件名:  Re: 非UTF-8環境でのマルチバイトファイル名でのファイルの保存  引用付きで返信する
UTF-8なエンコードのファイル名でもEUC-JPでも表示してくれそうなファイルマネージャ的ソフトでみると上記の例だとこんな感じに見えます。(ファイル添付します)


添付ファイル:
Screenshot.png
Screenshot.png [ 4.33 KiB | 表示数: 4998 回 ]
投稿記事 Posted: 2014年6月12日(木) 15:46
  記事の件名:  非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 つファイルは出来上がりますので検証はできます。

関連するバグ報告とかありますかね?
投稿記事 Posted: 2014年6月12日(木) 15:31

All times are UTC + 9 hours


ページ移動:  
Powered by MozillaZine.jp® Forum Software © phpBB Group , Almsamim WYSIWYG
Japanese translation principally by ocean