Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение кодировки файла 
V
    Опции темы
taral
Дата 28.12.2008, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Есть у меня куча файлов (txt) с кодировками (cp1251 и KOI8-R)
Мне нужно привести все файлы к одной кодировке.
Для этого мне нужно программно определить кодировку этих файлов. Этим я раньше не занимался. Полазил по мануалу. Подходящих функций не нашел. Подскажите.
Сейчас идея решения у меня такая. Найти последовательности символов свойственные кодировке. Если они присутствуют, то по ним определять кодировку. Но не хочется изобретать велосипед=) Может кто знает готовое решение.
PM MAIL   Вверх
theworldcreator
Дата 28.12.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 362
Регистрация: 25.8.2007
Где: Москва

Репутация: 10
Всего: 13



http://www.google.ru/search?q=определение+кодировки+php
Там много чего неплохого нашлось
PM MAIL WWW ICQ   Вверх
solenko
Дата 28.12.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67





--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
taral
Дата 28.12.2008, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Неплохое нашлось. Но основная масса про кодировку UTF-8.
А мне она не нужна. Есть несколько готовых решений основанных на том что я написал
Цитата

Найти последовательности символов свойственные кодировке.

А я спрашивал есть ли в PHP встроенная функция. Что бы не изобретать велосипед.

Добавлено через 3 минуты и 34 секунды
О нашлось хорошее решение. По длинне кода символа. Вот нельзя было просто подсказать. Я не просил готовое решение. А просто совет. Так нужно сразу в гугл посылать. Не люблю я этого..
Но за помощь благодарю.
PM MAIL   Вверх
theworldcreator
Дата 28.12.2008, 15:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 362
Регистрация: 25.8.2007
Где: Москва

Репутация: 10
Всего: 13



Дык я этого никогда не делал:) Просто набрал запрос в гугле, смотрю - по первой ссылке довольно оригинальная идея(основанная на номере символа в ASCII) оформленная в функцию. Из чего заключаю что поиском вы не пользовались. Ну и посылаю в поиск, надеясь что откроете хотя-бы первую ссылку, а может и остальные посмотрите - сомневаюсь что там один бред.
На случай если через много времени кто-то найдет эту тему и надеясь на ответ увидит только ссылку на google, где нужный результат уже далеко не первый, привожу тот код:
Код

   define('LOWERCASE',3);
   define('UPPERCASE',1);
   function detect_cyr_charset($str) {
       $charsets = Array(
                         'k' => 0,
                         'w' => 0,
                         'd' => 0,
                         'i' => 0,
                         'm' => 0
                         );
       for ( $i = 0, $length = strlen($str); $i < $length; $i++ ) {
           $char = ord($str[$i]);
           //non-russian characters
           if ($char < 128 || $char > 256) continue;

           //CP866
           if (($char > 159 && $char < 176) || ($char > 223 && $char < 242))
               $charsets['d']+=LOWERCASE;
           if (($char > 127 && $char < 160)) $charsets['d']+=UPPERCASE;

           //KOI8-R
           if (($char > 191 && $char < 223)) $charsets['k']+=LOWERCASE;
           if (($char > 222 && $char < 256)) $charsets['k']+=UPPERCASE;

           //WIN-1251
           if ($char > 223 && $char < 256) $charsets['w']+=LOWERCASE;
           if ($char > 191 && $char < 224) $charsets['w']+=UPPERCASE;

           //MAC
           if ($char > 221 && $char < 255) $charsets['m']+=LOWERCASE;
           if ($char > 127 && $char < 160) $charsets['m']+=UPPERCASE;

           //ISO-8859-5
           if ($char > 207 && $char < 240) $charsets['i']+=LOWERCASE;
           if ($char > 175 && $char < 208) $charsets['i']+=UPPERCASE;

       }
       arsort($charsets);
       return key($charsets);
   }


PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.