Я дорабатываю, скрипт определяющий кодировку веб-страницы и конвертирующий её в UTF-8.
В качестве "последнего" шанса после предыдущих вариантов извлечения кодировки из заголовков и мета-тагов, хочу использовать проверку на соответствие страницы кодировке UTF-8. Т.е, если контент страницы состоит из латинских символов и всевозможных знаков препинания, то страницу буду считать кодированной в UTF-8.
Не хочется делать проверку контента регулярными выражениями, т.к. не особо ими владею и думаю, что какие-то вполне подходящие символы потеряю. Но нашел функцию mb_check_encoding (http://php.net/manual/ru/function.mb-check-encoding.php) , которую хочу использовать как
if (mb_check_encoding($content,"UTF-8"))==true { // страницу считаем кодированной в UTF-8
Похоже, что функция как раз делает то, что надо, причем шире, чем только латинские символы и знаки препинания.
Уважаемые профи, верен ли такой путь?
Спустя 5 минут, 29 секунд (6.06.2012 - 11:47) Guest написал(а):
какой смысл от этой конвертации
Не могу придумать где её можно будет применить
Не могу придумать где её можно будет применить
Спустя 1 час, 43 минуты, 46 секунд (6.06.2012 - 13:31) Kumena написал(а):
Вы думаете, она не нужна?
Спустя 38 минут, 12 секунд (6.06.2012 - 14:09) redreem написал(а):
Спустя 19 часов, 47 минут, 55 секунд (7.06.2012 - 09:57) Kumena написал(а):
Спасибо что отозвались, redreem!
Второй день изучаю статью и статьи по ссылкам, но пока так и не могу найти для себя конкретного ответа - какая же проверка на соответствие контента кодировке UTF-8 наиболее верная? Пускай при условиях валидности проверяемой строки и хотя бы проверки на латинские буквы+пунктуацию.
Второй день изучаю статью и статьи по ссылкам, но пока так и не могу найти для себя конкретного ответа - какая же проверка на соответствие контента кодировке UTF-8 наиболее верная? Пускай при условиях валидности проверяемой строки и хотя бы проверки на латинские буквы+пунктуацию.
Спустя 10 минут, 9 секунд (7.06.2012 - 10:07) redreem написал(а):
ну мое мнение что в 100% случаев на 100% определить невозможно. всегда будут исключения. можно лишь для своей задачи выбрать наиболее статистически приемлимый.
Спустя 30 минут, 42 секунды (7.06.2012 - 10:38) Kumena написал(а):
А на найдется ли у Вас "в закромах" проверенного практикой регулярного выражения для наиболее широкой проверки на латинские буквы+пунктуацию (в.т.ч. HTML) ?
Спустя 36 минут, 54 секунды (7.06.2012 - 11:15) twin написал(а):
Костыль конечно, но для определения utf-8 работает. Просто нестандартный подход:
$content = file_get_contents('http://phpforum.ru');
function checkCharset($content)
{
return ($content == @iconv('utf-8', 'utf-8', $content)) ? 'utf-8' : 'other';
}
echo checkCharset($content);
Спустя 6 минут, 42 секунды (7.06.2012 - 11:22) redreem написал(а):
twin
кстати да, была такая мысля, но отмелась ввиду костыльности и ресурсоемкости при больших объемах. причем если исходный текст в не в utf8, но исключительно на латиннице, то функция так же вернет utf8.
кстати да, была такая мысля, но отмелась ввиду костыльности и ресурсоемкости при больших объемах. причем если исходный текст в не в utf8, но исключительно на латиннице, то функция так же вернет utf8.
Спустя 1 минута, 44 секунды (7.06.2012 - 11:23) twin написал(а):
Костыльность в самой идее определения кодировки текста. А насчет ресурсоемкости - не думаю, что регулярка победит.
Цитата |
причем если исходный текст в не в utf8, но исключительно на латиннице, то функция так же вернет utf8. |
Нука поведай мне пожалуйста, какая же это будет кодировка тогда, если там только латиница?
Спустя 3 минуты, 35 секунд (7.06.2012 - 11:27) redreem написал(а):
twin
откуда мне знать какая там исходная кодировка просто сравнение даст true
откуда мне знать какая там исходная кодировка просто сравнение даст true
Спустя 5 минут, 35 секунд (7.06.2012 - 11:33) twin написал(а):
Прежде чем писать сервисы по определению кодировок, не плохо бы изучить сам предмет. Хотя бы тут посмотри. Латиница во всех таблицах кодируется одинаково, так что можно смело заявить, что это UTF-8. Раз нет символов, кодированных иначе.
А насчет костылей, дык если определяется кодировка веб-странцы, то её нужно определять по заголовку. Любая попытка определить её по тексту - уже костыль по определению.
А насчет костылей, дык если определяется кодировка веб-странцы, то её нужно определять по заголовку. Любая попытка определить её по тексту - уже костыль по определению.
Спустя 16 минут, 48 секунд (7.06.2012 - 11:49) redreem написал(а):
twin
если
если
Цитата |
не плохо бы изучить сам предмет |
адресовано мне, то я то уж предостаточно его изучил, пруф: http://phpforum.ru/index.php?showtopic=50538&hl=
и кстати просмотрел темку - оказывается я пришел к такой конструкции:
Цитата |
preg_match('#.#u', $var) - определяет utf не utf. |
хотя уже особо не помню где и как это работало. экспериментировал видимо ради интереса.
Спустя 14 минут, 41 секунда (7.06.2012 - 12:04) Nikitian написал(а):
Посмотрите ещё это
Спустя 23 минуты, 10 секунд (7.06.2012 - 12:27) twin написал(а):
Цитата (redreem @ 7.06.2012 - 08:49) | ||
twin если
адресовано мне, то я то уж предостаточно его изучил, пруф: http://phpforum.ru/index.php?showtopic=50538&hl=://http://phpfor...topic=50538&hl= |
Скорее это адресовано автору, но вот насчет "предостаточно его изучил" после
Цитата |
причем если исходный текст в не в utf8, но исключительно на латиннице |
вызывает сомнения. Вот скажем так. На каком языке написано это: "forum"? Однозначно сказать, кто это писал и на каком языке нельзя. Потому что и на немецком и на французском и на английском это пишется одинаково. Вот если добавить артикль - будет понятно.
Однако можно смело сказать, что это слово написано на английском, и это будет истина. Так же и с кодировками. Латиница во всех таблцах кодируется одинаково. И имея текст с одной латиницей ни в коем случае нельзя определить по нему, какая таблица была использовани при его наборе. Но можно с точностью утверждать, что текст отвечает требованиям кодировки UTF-8.
Так что вот это заявление
Однако можно смело сказать, что это слово написано на английском, и это будет истина. Так же и с кодировками. Латиница во всех таблцах кодируется одинаково. И имея текст с одной латиницей ни в коем случае нельзя определить по нему, какая таблица была использовани при его наборе. Но можно с точностью утверждать, что текст отвечает требованиям кодировки UTF-8.
Так что вот это заявление
Цитата |
откуда мне знать какая там исходная кодировка |
мягко скажем не к месту.
Спустя 48 минут, 33 секунды (7.06.2012 - 13:16) redreem написал(а):
twin
вот блин нет щас у меня потребности копания в кодировках, как появится - я обязательно вспомню этот топик и отпишу какую-нить "заковырку"
вот блин нет щас у меня потребности копания в кодировках, как появится - я обязательно вспомню этот топик и отпишу какую-нить "заковырку"