dimarina.ru

html, css и javascript1   Разное1   Рецепты программирования на PHP или практические советы по программированию7   Управление проектом1  

 

Рецепты программирования на PHP или практические советы по программированию → Ajax - проблема в кодировках. Детектирование кодировки UTF-8.

Браузеры у клиентов разные. Иногда случается, что в Бд пишутся козябрики. Ниже - простой способ вовремя распознать кодировку UTF-8 и переконвертировать ее в стандартную, CP1251.

Случается такой казус довольно часто в AJAX-скриптах, которым передаются текстовые параметры методом GET через строку браузера.

Функция определяет является ли кодировка UTF8. В случае успеха - возвращает TRUE, иначе - FALSE.

1 function isUTF8($str)
2 {
3         return preg_match(%(?:
4         [xC2-xDF][x80-xBF]        
5         |xE0[xA0-xBF][x80-xBF]               
6         |[xE1-xECxEExEF][x80-xBF]{2}      
7         |xED[x80-x9F][x80-xBF]               
8         |xF0[x90-xBF][x80-xBF]{2}    
9         |[xF1-xF3][x80-xBF]{3}                  
10         |xF4[x80-x8F][x80-xBF]{2}    
11         )+%xs$str);
12 }

Использовать довольно просто:

1 if(isUTF8($str)) $str iconv('utf-8''cp1251'$str);

Теперь, если пользователь ввел козябрики в кодировке UTF8, то на выходе они сконвертируются в cp1251. Если в cp1251 - то на выходе, так и останется эта кодировка. Вызов функции iconv без предварительной проверки и даже с параметрами //TRANSLATE и //IGNORE - сгенерит ошибку.

Написать комментарий





Включите отображение картинок в браузере
Число на картинке: