![]()  | 
	Форум больше не используется. Присоединяйтесь к каналу #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 |