Набор символов сетки jQuery

В настоящее время я использую jQuery Grid для отображения данных, написанных на испанском языке, данные отлично отображаются с акцентами ( ´ ), но всякий раз, когда я пытаюсь выполнить поиск данных с использованием акцента, сервер получает искаженную строку, например ∫√, вместо буквы с акцентом.

Я также уверен, что это проблема jQuery Grid, поскольку я могу отправлять данные с акцентами, отправляя форму на той же странице.

Я также добавил тип контента в заголовок следующим образом:

<%@ page contentType="text/html;charset=UTF-8" %>
<sj:head jquerytheme="redmond" locale="es" />

Это код моей сетки jQuery, которую я использую с плагином struts2.

<s:url id="remoteurl" action="tabla-historial-director"  />
<s:url id="selectperiodourl" action="periodos" />

<sjg:grid
    id="grid"
    caption="Trabajos Terminales dirigidos"
    dataType="json"
    href="%{remoteurl}"
    pager="true"
    navigator="true"
    navigatorAdd="false"
    navigatorDelete="false"
    navigatorEdit="false"  
    gridModel="gridModel"
    rowList="3,10,15,20"
    rowNum="10"
    hidegrid="false"
    gridview="true"
    viewrecords="true"
>
    <sjg:gridColumn 
    align="center"  
        name="numRegistro"
        index="numRegistro"
        title="No. de registro"
        width="120"
        sortable="true"
        search="true"
        searchoptions="{sopt:['eq']}"
    />
    <sjg:gridColumn
        name="titulo"
        index="titulo"
        title="Título"
        width="840"
        search="true"
        searchoptions="{sopt:['cn']}"
    />
    <sjg:gridColumn
        align="center"
        name="tipo"
        index="tipo"
        title="Tipo"
        width="60"
        search="false"
    />
    <sjg:gridColumn
        align="center"
        name="periodo"
        index="periodo"
        title="Periodo"
        width="80"
        search="true"
        surl="%{selectcountrysurl}"
        searchoptions="{sopt:['eq'], dataUrl : '%{selectperiodourl}'}"
        searchtype="select"
    />
    <sjg:gridColumn
        align="center"
        index="objetivo"
        name="objetivo"
        editable="true"
        sortable="true"
        hidden="true"
        editrules="{ edithidden : true } "
        title="Objetivo"
        width="20"
    />
    <sjg:gridColumn 
        search="false"
        sortable="false"
        name="idTT"
        key="true" 
        title="Acción"
        width="80"
        formatter="formatLink"
    />
</sjg:grid>

Пожалуйста, я хотел бы знать, как использовать кнопку поиска вместе с испанским акцентом, большое спасибо за помощь.


person Diego Ramos    schedule 27.08.2012    source источник
comment
это обычная проблема, и иногда ее трудно решить... Если вы приняли ответы, которые были близки к правильным на ваши предыдущие вопросы, то вы обнаружите, что больше людей готовы вам помочь..   -  person ShaunOReilly    schedule 28.08.2012


Ответы (1)


Кто-то мог решить аналогичную проблему здесь: пунктуация JQuery для испанский (ó, í и т. д.) не работает в IE8

Он сделал следующее:

header("text/html; charset=iso-8859-1");

Вот еще несколько подсказок в этом ответе: Кодировка символов jQuery AJAX

Что сказал парень: «Предполагается, что UTF-8 обрабатывает все диакритические знаки и иностранные символы — почему бы не использовать его в вашем источнике данных?

Все должно быть UTF-8 в первую очередь. Я загрузил файлы в блокнот++, преобразовал в utf-8 и вручную изменил символы на нужные акценты. После того, как все сделано, все работает как шарм.

Кстати, если ваш сервер не определен для файлов .html php-process, файлы, которые вы загружаете с помощью ajax, не получают вашу кодировку iso. Если вы настаиваете на использовании кодировки iso, запросите файл php вместо файла html и определите кодировку в заголовке (не в самом файле)"

Это помогает вам?

Вы всегда можете попробовать html-коды и заменить их в результатах поиска: http://webdesign.about.com/od/localization/l/blhtmlcodes-sp.htm

Другой парень столкнулся с некоторыми проблемами с испанскими символами здесь: http://ianloic.com/2009/12/27/jquery-selector-escaping/

Он написал escape-функцию, которая может быть не той, что вам нужна:

(function($) {
if ($) {
var escape_re = /[#;&,\.\+\*~':"!\^\$\[\]\(\)=>|\/\\]/,
escapeCharacters = {
‘#’: 1,
‘;’: 1,
‘&’: 1,
‘,’: 1,
‘.’: 1,
‘+’: 1,
‘*’: 1,
‘~’: 1,
‘\”: 1,
‘:’: 1,
‘”‘: 1,
‘!’: 1,
‘^’: 1,
‘$’: 1,
‘[': 1,
']‘: 1,
‘(‘: 1,
‘)’: 1,
‘=’: 1,
‘>’: 1,
‘|’: 1,
‘/’: 1,
‘\\’: 1
};
$.escape = function(s){
var ret = ”, offset;
if (s && ((offset = s.search(escape_re)) !== -1)) { // look for an occurence of a special character
ret = s.substr(0, offset) + ‘\\’ + s[offset];
for(var i=offset + 1, len=s.length, ch; i < len; i++){ // assume that another special character may occur so we just loop through the rest of the string
ch = s[i];
ret += (escapeCharacters[ch]? '\\': '') + ch;
}
}
return ret;
};
}
})(window.jQuery);

чт

person ShaunOReilly    schedule 28.08.2012