MozillaZine.jp フォーラム
https://forums.mozillazine.jp/

ファイルダウンロードの際に日本語が文字化けしてしまう
https://forums.mozillazine.jp/viewtopic.php?f=26&t=15162
ページ 11

作成者:  ヘボン [ 2014年12月19日(金) 21:16 ]
記事の件名:  ファイルダウンロードの際に日本語が文字化けしてしまう

現在FireFox34.0.5でアドオン開発を行っているのですが、どうしてもわからないので質問させていただきます。

以前のFFでファイルをダウンロードするアドオンを作成して居ました。
その中で大体以下のような方法をとってファイルを保存するようにしていたのですが、
バージョンアップによりこの方法ではエラーが出るようになり新しい方法を利用することにしました。
//パーシスタンス
var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist);
//ファイルを保存する
persist.saveURI(sourceURI,null,refererURI,null,null,targetURI,privacyContext);

MDNにあったものを転用しテスト用のものをこしらえたのですが、
この場合fileNameに日本語が含まれると保存したファイル名が文字化けしてしまいます。
この解消の方法を教えていただきたいのです。

var fileName="あいうえおABCDE.jpg";
function downloadFile(httpLoc,referer,fileName)
{
Task.spawn(function ()
{
let list = yield Downloads.getList(Downloads.ALL);

let view = {
onDownloadAdded: download => console.log("Added", download),
onDownloadChanged: download => console.log("Changed", download),
onDownloadRemoved: download => console.log("Removed", download)
};
var Dir='C:\\';
yield list.addView(view);
try
{
let download = yield Downloads.createDownload({
source: httpLoc,
target: Dir+decodeURIComponent(encodeURIComponent(fileName)),
});
list.add(download);
try {
download.start();
alert("Now monitoring all downloads. Close the message to stop.");
} finally {
yield list.remove(download);
yield download.finalize(true);
}
} finally {
yield list.removeView(view);
}
}).then(null, Components.utils.reportError);

作成者:  RaC [ 2014年12月19日(金) 21:44 ]
記事の件名:  Re: ファイルダウンロードの際に日本語が文字化けしてしまう

ファイル名はどのように文字化けしますか?
化け方から、何が起こっているか特定できる場合があります。

また、fileName の定義はそのままコード中に書かれているのでしょうか。
JavaScript のコード中に非ASCIIの文字を書く場合、以下のようにエスケープして書いた方が安全です。
コード:
var fileName="\u3042\u3044\u3046\u3048\u304AABCDE.jpg";


それと、以下のコードは何を意図されたものでしょうか。
コード:
decodeURIComponent(encodeURIComponent(fileName)),

ページ 11 All times are UTC + 9 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/