2015-02-06 5 views
0

Ну, это странно и трудно объяснить, что случилось, но я постараюсь сделать все возможное.Проблема кодирования Perl Catalyst

По какой-то причине значения шаблона изменяют их кодировку (я уверен, что они есть).

файл контроллера (в кодировке UTF-8):

print STDERR "ąęść"; 
$c->stash->{some_variable} = "ąęść"; # some unicode chars 

Файл шаблона (в кодировке UTF-8):

[% some_variable %]<br> 
test: ąęść 

Как выход в браузере я получаю:

ÄÄÅÄ 
test: ąęść 

Выход на консоли (с включенным кодированием UTF-8):

ąęść 
+1

У вас есть 'use utf8;' в вашем файле контроллера? – ThisSuitIsBlackNot

+4

Похоже, что у вас нет 'ENCODING => 'utf-8'' в вашей конфигурации TT. – Borodin

+0

Конфигурация в порядке. По какой-то причине содержимое файла шаблона повреждено. Когда я удаляю все из файла шаблона и размещаю там только переменную, она работает ... – J33nn

ответ

2

Пожалуйста, ознакомьтесь с хорошей документацией, предоставленной Каталитической Wiki, по адресу Using Unicode, а также Catalyst::View::TT. Perl Unicode Cookbook может помочь вам лучше понять Perl поддержку UTF-8, как правило, лучше, чем большинство других языков, доступных сегодня.

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

1

Существует тонна исправлений для поддержки Unicode и UTF-8 в целом с самой последней стабильной версией Catalyst (5.90084). Catalyst теперь UTF-8 по умолчанию, но, конечно, всегда есть твердые края. Вы должны просмотреть последние документы по этому вопросу, чтобы узнать, что происходит.

Если шаблон содержит многобайтовый символ, вам действительно необходимо установить спецификацию или просмотреть документацию по вашему выбору шаблона.

Смежные вопросы