Extの中国語の文字化けしの問題をどのように解決します

2396 ワード

1つの方法を提供する:全局式UTF-8符号化の方式
1.jsに現れる中国語、例えばリストの名前など、jsファイルを単独で定義し、静的変数のような概念を定義し、その後、このファイルをトランスコードし、すなわち中国語名をunicode符号化にトランスコードする
例えばjsファイルtest.js:
 

var Resource = function () {
    return {
        init : function() {
            this.mainTask.taskName="    ";
 }
    };
}();
  

必要な場所で引用できるmainTask.taskName
2.要求パラメータに中国語が含まれている場合はpostで提出する

 _invoke: function(action, paramsObj, OnSuccess, scope) {
        Ext.Ajax.timeout = 100000;
        //The timeout in milliseconds to be used for requests,when out of it deduce the error
        Ext.Ajax.request({
            url:action,
            method: 'post',
            params:paramsObj,
            scope: scope,
            callback: function(options, success, response) {
                var result = Ext.util.JSON.decode(response.responseText);
                if (success) {
                    if (OnSuccess) {
                        OnSuccess.call(scope, result);
                    }
                } else {
                    var msg = (result && result.Message) ? result.Message : 'Some error happend. Please try again';
                    Ext.MessageBox.alert('Error', msg);
                }
            }
        });

    }
 

ここでparamsObjは、json文字列ではなくjson objectまたはencoded URLである
params: { foo: 'bar' } OR  params: 'foo=bar'
jsonオブジェクトまたはencoded URLをどのように形成しますか?
2.1.formフォームのコミットについて:

var paramsObj = Ext.lib.Ajax.serializeForm(Ext.getCmp('upgradeApplicationForm').getForm().getEl().dom);

2.2 JSON文字列については、Ext.decode(jsonStr)でJSONオブジェクトに変換できます
途中にスラッシュ(パス情報)がある場合は、まずスラッシュをダブルスラッシュに置き換える必要があります.そうしないと、スラッシュは失われます.

       //replace the '\' to the '\\'
        var myPat = /%5C/g; //this is using regular expression to define the escaped version of a backslash
        fileNames = escape(fileNames);
        fileNames = fileNames.replace(myPat,"%5C%5C");
        fileNames = unescape(fileNames);
        var jsonObj = Ext.decode(fileNames);