![]() |
Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
![]() |
#1 |
Новенький
|
![]()
И снова про кодировку.
Форум читал. typo3 4.0.3 php 4.4.4 Mysql 4.1.22 phpmyadmin показывает character set везде utf8, collation везде utf8_unicode_ci. $TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;'; (вариант: $TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;'.chr(10).'SET CHARACTER SET utf8;') $TYPO3_CONF_VARS['BE']['forceCharset'] ='utf-8'; $TYPO3_CONF_VARS['SYS']['multiplyDBfieldSize'] = 1; Например, в таблице be_users поле username varchar(20) (utf8_unicode_ci). При сохранении через BE имя пользователя русскими буквами без ошибок молча урезается до 10 символов. Если через phpmyadmin записать туда "длинное_русское_имя" - в BE оно корректно читается и показывается, но при попытке изменить и сохранить опять урезается. Что я упустил? |
![]() |
![]() |
![]() |
#2 |
Senior Member
|
![]()
Сталкивался... всех условий вспомнить не могу, но причина в том, что валидация полей TYPO3 работает "по-байтово". Чем грозит, думаю обяснять не нужно.
Почему так, не разбирался. Возможно не совсем корректно настроен PHP (не корректная поддержка UTF-строк). Если причина в PHP и решите с помошью настроек, просьба отписать в этот тред... Кстати баг репорт TYPO3 не смотрели? Быстрое решение: поправить TCA увеличив размеры в двое. Прописать в localconf.php: Код:
$TCA['be_users']['columns']['username']['config']['size'] = 40; |
![]() |
![]() |
![]() |
#3 |
Новенький
|
![]()
Спасибо за наводку, покопался.
в t3lib/class.t3lib_tcemain.php функция checkValue_input: PHP код:
Дальше варианты: 1) Если руками заменить на mb_substr с указанием utf-8 - работает нормально. 2) Если включить в php.ini Код:
mbstring.internal_encoding = UTF-8 mbstring.func_overload = 2 Куда копать дальше? |
![]() |
![]() |
![]() |
#4 |
Administrator
|
![]()
похоже - это minor баг
так что ему прямая дорога в баг трекер по mb_substr и checkValue_input там есть 2 бага, но не те http://bugs.typo3.org/view.php?id=2776 http://bugs.typo3.org/view.php?id=2020 |
![]() |
![]() |
![]() |
#5 |
Новенький
|
![]()
Логично использовать t3lib_cs::substr, отписал баг репорт #4781.
У себя пропатчил checkValue_input() так: PHP код:
Не знаю только, стоило столько городить или достаточно было парой строк ограничиться. Последний раз редактировалось extreme; 13.01.2007 в 23:02 |
![]() |
![]() |
![]() |
#6 |
Senior Member
|
![]() |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ошибка при сохранении записей в ве | Volodymyr Pavlyuk | Общие вопросы | 0 | 07.08.2006 14:46 |
В RTE при сохранении куда-то исчезает тэг hr... | amida | HTMLArea, RTE, tinymce_rte и другие визуальные редакторы | 6 | 30.06.2005 03:38 |