if (preg_match('//u', $string)) { /* у вас UTF-8 */ }
Работать должно, думаю, с версии PHP 4.3.5, в документации сказано: «UTF-8 validity of the pattern is checked since PHP 4.3.5».
20.03 16:42
←
20.03.2008, Nº 1632
PHP: простой способ определения кодировки UTF-8Придумал простой способ определения кодировки UTF-8 в PHP, работает без модулей iconv и multibyte string (mb-функции):
Работать должно, думаю, с версии PHP 4.3.5, в документации сказано: «UTF-8 validity of the pattern is checked since PHP 4.3.5».
20.03 16:42
← 20.03.2008, Nº 1632 |
|||||||||||||||||
Нужно отметить, что строка, содержащая только ASCII-символы тоже принимается за юникодную.
Не «ASCII», а «нижняя половина ASCII». Это тоже UTF-8.
Там бы ещё модификатор s, но тогда теоретически возможно оптимизационное "выполнение" таких регулярок "не глядя на строку", что теоретически может испортить всю идею.
а он там не важен — сначала идёт проверка на валидность строки (из доки по PCRE): «When you set the PCRE_UTF8 flag, the strings passed as patterns and subjects are (by default) checked for validity on entry to the relevant functions».
Голосую за morozovа, по-моему верхняя половина - уже и на ASCII вовсе. ASCII, is a character encoding based on the English alphabet... ASCII includes definitions for 128 characters... (wiki)
Как это не называй, а всё одно — символы с кодами 0-127 входят в UTF-8.
Странно, что до сих пор никто не пришёл и не сказал, что символ с кодом ноль в UTF-8 не входит.
Так ведь символ с кодом ноль в UTF-8 не входит!
А я вот такое видел: preg_match('/^.$/u', 'ñ')
Тьфу, это проверка наличия поддержки UTF-8... Шото я затупил :)
О! Дима проснулся :) У тебя дома интернет что ли есть?
А мы тут твой проект украли!
Спасибо большое за идею - работает :)
Спасибо, простое и быстрое решение :)
Спасибо. Попробовал. Интересно, что мне в решении не помогло. Хотя, у меня проверка кодировки была лишь возможным методом определения проблемы...
Если вы используете определение кодировки на латинских буквах и/или цифрах, то оно и не поможет, такой текст находится и в кодировке UTF-8, и в, скажем, CP866, CP1251, CP1252 и ещё в целой куче других. |
| Евгений Степанищев (imbolk@gmail.com)
t=0.053
|