Мы используем Template Toolkit в приложении Catalyst.Мы настроили TT для использования UTF-8 и раньше у него не было проблем.
Теперь я вызываю метод substr () для строки var.К сожалению, он разбивает строку после n байтов вместо n символов.Если n 'th и (n + 1) ' байт строят символ в юникоде, он разделяется, и только 1-й байт является частью результата substr ().
Как исправить или обойти это поведение?
[% string = "fööbär";
string.length; # prints 9
string.substr(0, 5); # prints "föö" (1 ascii + 2x 2 byte unicode)
string.substr(0, 4): # prints "fö?" (1 ascii, 1x 2 byte unicode, 1 unknown char)
%]
До сих пор у нас не было проблем с символами Unicode, ни из базы данных, ни из текста в шаблонах.
Редактировать: Вот как я настраиваю модуль Catalyst::View::TT
в своем приложении Catalyst:
__PACKAGE__->config(
# DEBUG => DEBUG_ALL,
DEFAULT_ENCODING => 'utf-8',
INCLUDE_PATH => My::App->path_to( 'root', 'templates' ),
TEMPLATE_EXTENSION => '.tt',
WRAPPER => "wrapper/default.tt",
render_die => 1,
);