今天偶然被問到這個問題。
mozilla有個專門轉編碼的xpcom。讀文件之後或寫文件之前我們應該轉一下,以確保不會出現亂碼。
// 將字符類型轉爲UTF-8,防止亂碼出現,通常用於讀文件 this.convertToUnicode = function(aStr) { try { var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"] .createInstance(Components.interfaces.nsIScriptableUnicodeConverter); converter.charset = "UTF-8"; var content = converter.ConvertToUnicode(aStr); return content; } catch (e) { } }
// 字符集轉換(from)通常用於寫文件 this.convertFromUnicode = function(aStr) { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"] .createInstance(Components.interfaces.nsIScriptableUnicodeConverter); converter.charset = "UTF-8";// 或者"GB2312" var content = converter.ConvertFromUnicode(aStr); return content; } catch (e) { } }
寫文件 // path格式也許爲:"c://xxx.txt" function write(aStr,path) { var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci