0

Firefox 拡張機能内で、データベース ファイルを開き、データベースの内容を表示しています。ただし、Firefox では、おそらくエンコードの問題が原因で、一部の文字が正しく表示されません。データベース ファイルを SQLite Database Browser で開いてみたところ、名前の列が正しく表示されました。

Cachéこのテキスト文字列を適切に処理して、意図したとおりに (たとえば、ではなく)文字を出力するにはどうすればよいCachéですか?

この問題を再現するコード スニペット:

var StorageService = Cc["@mozilla.org/storage/service;1"]
    .getService(Ci.mozIStorageService);
_Conn = StorageService.openDatabase(file);
var stmt = _Conn.createStatement("Select name from data");
var RunQuery = function () {
    return {
        arr: [],
        handleResult: function (aResultSet) {
            var row = aResultSet.getNextRow();
            alert([row.getResultByName("name"), 'Cach\u00E9']);
        },
        handleError: function (aError) {},
        handleCompletion: function (aReason) {}
    };
};
stmt.executeAsync(RunQuery());

出力:Caché,Caché
意図した出力:Caché,Caché

4

2 に答える 2

0

これはうまくいくようです:

var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
    .createInstance(Ci.nsIScriptableUnicodeConverter);
converter.charset = "UTF-8";
alert([converter.ConvertToUnicode(row.getString("name")), 'Cach\u00E9']);
于 2013-02-15T22:02:08.860 に答える
0

IDX_NAME が column のインデックスであると仮定するとname

alert([row.getUTF8String(IDX_NAME), 'Cach\u00E9']);

意図した結果が得られます。

于 2013-02-15T21:42:44.033 に答える