Официальный сайт студ.городка НГТУ
Программирование и БД » [php] Определение кодировки 

#1  12.02.10 17:28

[php] Определение кодировки

Кто-нибудь задовался вопросом, как определить кодировку текста для немультибайта (для последнего есть http://ru.php.net/manual/en/function.mb … oding.php)?

Offline

#2  12.02.10 17:36

$up
Профиль

Re: [php] Определение кодировки

efferson написал(а):

как определить кодировку текста для немультибайта

то что не мультибайт, то UTF-16 8)

Offline

#3  12.02.10 22:55

Re: [php] Определение кодировки

Не может быть!? Ты уверен? :)

Исправлено efferson (12.02.10 22:57)

Offline

#4  12.02.10 23:35

Re: [php] Определение кодировки

Это не то что нужно?

Используя иконв и мд5чексум, мы по-порядку ищем нужную нам кодировку из масива допустимых кодировочек ;) Легко и просто!

http://deer.org.ua/2009/10/06/1/

Код: php:

function detect_encoding($string) { 
  static $list = array('utf-8', 'windows-1251');
 
  foreach ($list as $item) {
    $sample = iconv($item, $item, $string);
    if (md5($sample) == md5($string))
      return $item;
  }
  return null;
}

Исправлено GrAnD (12.02.10 23:50)

Offline

#5  13.02.10 02:22

$up
Профиль

Re: [php] Определение кодировки

GrAnD, эта функция по сути определяет только utf8. для всех остальных будет возвращать 1251.
efferson, а что ты понимаешь под немультибайтом? http://msdn.microsoft.com/en-us/library/z207t55f.aspx

Исправлено $up (13.02.10 02:33)

Offline

#6  13.02.10 09:58

Re: [php] Определение кодировки

$up написал(а):

а что ты понимаешь под немультибайтом?

Я вижу этот мир примерно так: есть классический вариант (назовём его немультибайт :)) хранения текста, при котором на каждую букаффку выделяется по одному байту. Естественно, что на все алфавиты такого расклада не хватит, поэтому человечество изобрело кодировки аля Windows-XXX, JP-чёта-там и т.д.
Потом люди поняли, что так жить нельзя и придумали UTF (назовём его мультибайт), где для хранения символа используется один или более байт.
Вот как-то так :) Поправь, если что не так сказал.

Так вот мне интересно, можно ли как-нибудь с минимальными издержками определить, кодировку текста в "немультибайте"?

Если множество возможных кодировок заранее известно и ограничено, идею GrAnD'a в принципе можно попробовать применить... правда цена решения будет скорей всего велика :(

Offline

#7  13.02.10 12:38

$up
Профиль

Re: [php] Определение кодировки

Твоя мысль понятна. Я привык уже делить на multibyte и widechar, поэтому твой вопрос вызвал улыбку. Микрософт не делает различия между кодовыми страницами с кодированием одним или несколькоми символами, они все попадают в категорию мультибайта. Задача определения кодировки не тривиальна и не точна на 100%. В windows есть http://msdn.microsoft.com/en-us/library … S.85).aspx такая вот функция но результат не всегда правильный.

Offline

#8  13.02.10 14:15

$up
Профиль

Re: [php] Определение кодировки

Offline

#9  13.02.10 17:33

Re: [php] Определение кодировки

$up, благодарю за ссылки

Offline

Программирование и БД » [php] Определение кодировки 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.192 сек.
Выполнено 14 запросов.