抱歉模糊的標題,但我有點失落,所以很難具體。我已經開始使用附加SDK開始使用Firefox擴展。我想要的是觀看頁面進行更改,在這種情況下是Twitch.tv聊天窗口,並將這些更改保存到文件中。使用Firefox擴展程序保存來自網站的文本,保存了錯誤的字符
我已經得到這個工作,每次在它被保存的頁面上發生了變化。但是,例如韓語中的「不尋常」字符不能正確保存。我認爲這與編碼文件/字符串有關?我試圖通過將它們複製粘貼到記事本中來保存相同的字符,它要求我保存在Unicode中,以及什麼時候我一切正常。所以我想,好的,在寫入之前,我會將日誌文件的編碼更改爲unicode。沒有確切的工作......現在所有的角色都是用某種外語。
我使用寫入文件的代碼是這樣的:
var {Cc, Ci, Cu} = require("chrome");
var {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm");
var file = FileUtils.getFile("Desk", ["mylogfile.txt"]);
var stream = FileUtils.openFileOutputStream(file, FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | FileUtils.MODE_APPEND);
stream.write(data, data.length);
stream.close();
我看着FileUtils.jsm超過在MDN的說明並儘可能我可以告訴有沒有辦法告訴它我想使用哪種編碼?
如果你不知道一個修補程序是否可以給我一些很好的搜索條件,因爲我似乎在這方面有所欠缺。因爲我在這個問題上基本上什麼都不知道,所以我現在在黑暗中徘徊了一下。
編輯: 這是我結束了(現在)讓這件事的工作:
var {Cc, Ci, Cu} = require("chrome");
var {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm");
var file = Cc['@mozilla.org/file/local;1']
.createInstance(Ci.nsILocalFile);
file.initWithPath('C:\\temp\\temp.txt');
if(!file.exists()){
file.create(file.NORMAL_FILE_TYPE, 0666);
}
var charset = 'UTF-8';
var fileStream = Cc['@mozilla.org/network/file-output-stream;1']
.createInstance(Ci.nsIFileOutputStream);
fileStream.init(file, FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | FileUtils.MODE_APPEND, 0x200, false);
var converterStream = Cc['@mozilla.org/intl/converter-output-stream;1']
.createInstance(Ci.nsIConverterOutputStream);
converterStream.init(fileStream, charset, data.length,
Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
converterStream.writeString(data);
converterStream.close();
fileStream.close();
你的美麗,我終於得到足夠的關鍵字來得到這個東西的工作。我將編輯我的原始文章,以顯示最終我做了什麼(因爲我使用的是附加SDK,因此我需要谷歌來對代碼進行一些其他更改)。 – Robert