Посоветуйте хороший метод для определения кодировки.
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Посоветуйте хороший метод для определения кодировки. - 2009-11-25 16:14:34.423333
|
|
|
Agent Smith
Сообщений: 976
Оценки: 0
Присоединился: 2007-04-10 21:56:49.593333
|
Я знаю, что в арсенале PHP есть функции, при помощи которых можно определить кодировку текста, однако, к моему удивлению и огорчению, они не всегда выдают правильный результат. На офф сайте (php.net) есть очень много примеров, где описано, как определить кодировку текста, однако использовать нужно какой-то один для проверки.
|
|
|
RE: Посоветуйте хороший метод для определения кодировки. - 2009-11-25 16:22:52.636666
|
|
|
Pashkela
Сообщений: 3756
Оценки: 736
Присоединился: 2007-01-03 06:19:40.900000
|
<?php
$q = 'вася пряников';
$s = mb_detect_encoding($q);//Определяем кодировку
$q = iconv($s, 'CP1251//TRANSLIT', $q);//Декодируем
echo $s . "<br>";
echo $q . "<br>";
?>
|
|
|
RE: Посоветуйте хороший метод для определения кодировки. - 2009-11-25 18:35:12.103333
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
У меня была недавно схожая ситуация. Надо было определить в какой кодировки заливаются файлы. cp1251 или utf8. mb_detect_encoding никак не хотел нормально работать. Нашел в инете небольшую функцию, которая решила мою проблему: function detectUTF8($string) {
return preg_match('%(?:[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})+%xs', $string);
}
|
|
|
RE: Посоветуйте хороший метод для определения кодировки. - 2009-11-26 10:30:53.123333
|
|
|
Agent Smith
Сообщений: 976
Оценки: 0
Присоединился: 2007-04-10 21:56:49.593333
|
quote:
ORIGINAL: oRb У меня была недавно схожая ситуация. Надо было определить в какой кодировки заливаются файлы. cp1251 или utf8. mb_detect_encoding никак не хотел нормально работать. Нашел в инете небольшую функцию, которая решила мою проблему: function detectUTF8($string) {
return preg_match('%(?:[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})+%xs', $string);
} Реагирует позитивно только на cp-1251. А как распознать cp-1252? И вообще, есть разница между cp-1252(Windows), cp-1252(Linux), cp-1252(Mac)?
|
|
|
|
|