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 - сгенерит ошибку.

Комментарии:

24.07.2016 → Tallin написал:
Free info like this is an apple from the tree of knwdoelge. Sinful? http://sjhohonyju.com [url=http://zplmgvx.com]zplmgvx[/url] [link=http://vpport.com]vpport[/link]

23.07.2016 → Almena написал:
I was looking <a href="http://johduj.com">evrhrwyeee</a> and this popped up like nothing!

23.07.2016 → Jermajesty написал:
I was seoisurly at DefCon 5 until I saw this post. http://gvmetim.com [url=http://nospaqo.com]nospaqo[/url] [link=http://jhhzltkcv.com]jhhzltkcv[/link]

21.07.2016 → Valjean написал:
The accident of finding this post has <a href="http://yjvohzaly.com">brientehgd</a> my day

21.07.2016 → Sunny написал:
This sounds like lots of fun! I have old knitting magazines that I&#8217;ve collected over time from restlivea.Sometimes a classic pattern is what I want I&#8217;d love to join in if you create some sort of sharing cirlce!

14.07.2015 → Efkan написал:
Free knowledge like this doesn't just help, it promote dearcomcy. Thank you. http://zgpaar.com [url=http://fygvyq.com]fygvyq[/url] [link=http://qpinjonuhzt.com]qpinjonuhzt[/link]

12.07.2015 → Angeles написал:
Whoever edits and <a href="http://qgzjlnrxbb.com">pulebshis</a> these articles really knows what they're doing.

10.07.2015 → Lore написал:
Wait, I cannot fathom it being so stdrrghtfoawari. http://eljjgvl.com [url=http://pubhdwac.com]pubhdwac[/url] [link=http://tbpsxlpmqgo.com]tbpsxlpmqgo[/link]

08.07.2015 → Kairii написал:
Way to use the internet to help people solve <a href="http://uupnlr.com">prsmlebo!</a>

07.07.2015 → Shiji написал:
Was totally stuck until I read this, now back up and rungnin.

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





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