Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
08.01.2007, 18:52 | #1 |
Новенький
|
utf8 - при сохранении урезает строку
И снова про кодировку.
Форум читал. 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 оно корректно читается и показывается, но при попытке изменить и сохранить опять урезается. Что я упустил? |
09.01.2007, 02:44 | #2 |
Senior Member
|
Сталкивался... всех условий вспомнить не могу, но причина в том, что валидация полей TYPO3 работает "по-байтово". Чем грозит, думаю обяснять не нужно.
Почему так, не разбирался. Возможно не совсем корректно настроен PHP (не корректная поддержка UTF-строк). Если причина в PHP и решите с помошью настроек, просьба отписать в этот тред... Кстати баг репорт TYPO3 не смотрели? Быстрое решение: поправить TCA увеличив размеры в двое. Прописать в localconf.php: Код:
$TCA['be_users']['columns']['username']['config']['size'] = 40; |
13.01.2007, 17:01 | #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 Куда копать дальше? |
13.01.2007, 19:18 | #4 |
Administrator
|
похоже - это minor баг
так что ему прямая дорога в баг трекер по mb_substr и checkValue_input там есть 2 бага, но не те http://bugs.typo3.org/view.php?id=2776 http://bugs.typo3.org/view.php?id=2020 |
13.01.2007, 20:26 | #5 |
Новенький
|
Логично использовать t3lib_cs::substr, отписал баг репорт #4781.
У себя пропатчил checkValue_input() так: PHP код:
Не знаю только, стоило столько городить или достаточно было парой строк ограничиться. Последний раз редактировалось extreme; 13.01.2007 в 23:02 |
27.08.2007, 22: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 |