Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Инструменты разработчика (http://forum.typo3.ru/forumdisplay.php?f=34)
-   -   PHP / FORM / UTF-8? (http://forum.typo3.ru/showthread.php?t=10813)

Ивано++ 05.07.2013 01:07

PHP / FORM / UTF-8?
 
Добрый день.

Отправляю форму.
В заголовке сайта стоит:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Но не получается правильно посчитать длину строки из русских символов.
print strlen($GLOBALS['_POST']['username']);

Правильно понимаю что когда сайт работает в UTF-8
для работы со строками всегда надо исползовать:
if (mb_strlen($searchitem, 'UTF-8') >= 4) ?

вместо strlen-обычного?

--
Спасибо.

dmartynenko 05.07.2013 13:06

Однозначно при использовании utf8 со строками использовать mb_ функций.

В расширении multibyte string (mb_) есть опция перегрузки стандартных функций, когда strlen() и прочие на самом деле подменяются mb_ аналогами. Но не все.

И я лично предпочитаю явно использовать mb_ функции, что бы не зависеть от настроек php.

В том числе в регулярках. Но там два варианта, либо использовать mb_ereg_*(), либо preg_*() с модифкатором "u".

Ивано++ 05.07.2013 13:17

Значит тогда использую mb_
И все прекрасно работает...
И потом - уже наверное не будет сайтов без UTF-8 на typo3...

И даже не помню что бы где-то писал:
PHP код:

 // For backend charset
 
$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';
 
$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;'
 
 
// For GIFBUILDER support
 // Set it to 'iconv' or 'mbstring'
 
$TYPO3_CONF_VARS['SYS']['t3lib_cs_convMethod'] = 'mbstring';
 
// For 'iconv' support you need at least PHP 5.
 
$TYPO3_CONF_VARS['SYS']['t3lib_cs_utils'] = 'mbstring'


Андрей Аксенов 06.07.2013 16:35

Цитата:

Сообщение от Ивано++ (Сообщение 36784)
Значит тогда использую mb_
И все прекрасно работает...
И потом - уже наверное не будет сайтов без UTF-8 на typo3...

И даже не помню что бы где-то писал:
PHP код:

 // For backend charset
 
$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';
 
$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;'
 
 
// For GIFBUILDER support
 // Set it to 'iconv' or 'mbstring'
 
$TYPO3_CONF_VARS['SYS']['t3lib_cs_convMethod'] = 'mbstring';
 
// For 'iconv' support you need at least PHP 5.
 
$TYPO3_CONF_VARS['SYS']['t3lib_cs_utils'] = 'mbstring'


Да, эти настройки уже признаны устаревшими, но базу данных нужно создавать с учетом utf-8! Несколько раз попадал уже на сайты с проблемами, ноги которых росли из неверной кодировки базы данных. Походу эти сайты создавались из каких-то пакетов, а уже в них база данных создавалась изначально в неверной кодировке.

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


Часовой пояс GMT +4, время: 05:48.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot