Работя върху xe:djxDataGrid
, който зарежда и записва данни чрез xe:restService
. Той зарежда данните от документите на Domino и в този момент всички скандинавски знаци като ä и ö изглеждат добре.
Но ако данните са променени и записани обратно на сървъра, ä се превръща в ä и ö се превръща в ö. Мисля, че това е така, защото данните са UTF-8 кодирани, но в даден момент се интерпретират като ISO-8559-1.
Опитвам се да използвам UTF-8 навсякъде:
- Документ на интернет сайта: Използвайте UTF-8 за изход - Да
- Свойства на Db: Кодиране - utf-8
- Форма: Набор от знаци - Unicode (UTF-8)
Заглавката на отговора на страницата има този ред: Content-Type:text/html;charset=utf-8
Също така се опитах да променя набора от знаци на ISO-8559-1 навсякъде, но това не помага. Опитах се да настроя свойството computeWithForm на контролата REST на true, за да видя дали това го кара да използва набора от символи на формуляра, но няма ефект.
Във Firefox (17.0.1) всичко работи добре! Проблемът възниква поне в Chrome и IE9.
Тъй като е специфичен за браузъра, мисля, че се поврежда, когато Dojo изпраща данни към услугата REST. Но не съм виждал начин да кажа конкретно на Dojo да използва UTF-8.
HTML тагът изглежда така:
Chrome: <html lang="fi">
Firefox: <html class="dj_gecko dj_contentbox" lang="fi">
djConfig е това: djConfig="locale: 'fi-fi'
.
Версията на Domino е 8.5.3FP3, а датата на ExtLib е 20121217.
За съжаление не мога да накарам потребителите да използват само Firefox. Някакви идеи как да поправя това?
редактиране 1
Същият проблем възниква в демонстрационно приложение ExtLib: xpagesext.nsf/REST_DojoGrid.xsp и xpagesext.nsf/REST_DojoGridJsonRest.xsp.
редактиране 2
Като заобиколно решение мога да направя това в полето Въвеждане на преводи във формуляра:
@ReplaceSubstring(@ThisValue; "ä":"ö"; "ä":"ö");
Това работи, когато активирам computeWithForm в контрола REST. Трябва да включа всички неанглийски символи, които вероятно ще бъдат използвани. Или има общ начин за конвертиране на всички?
редактиране 3
Както ме посъветва @Esailija, прегледах HTTP PUT заявката, която записва данните на сървъра. Този път тествах с Opera 12.12, която също има проблема. Типът съдържание на заявката PUT е:
Content-Type: application/json
С Firefox е:
Content-Type:application/json; charset=UTF-8
Това обяснява проблема, но как да го поправя? Според моето разбиране проблемът е с контрола dojox.grid.DataGrid (1.6), която не задава набора от знаци в заявката PUT. Firefox изглежда го настройва автоматично. Или всъщност е в ExtLib DataGrid, който не успява да зададе набора от знаци в контролата на Dojo? Не намерих начин да задам набор от знаци в DataGrid.
редактиране 4
Опитах да променя свойството contentType в REST контрола от application/json
на application/json; charset=UTF-8
. Това не помогна и типът съдържание на PUT все още е application/json
.
Благодаря,
- Пану
ö
на страницата, а другият да показваö
.. - person Esailija   schedule 12.01.2013