Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: mbstring кривой и глючный
Форумы портала PHP.SU » PHP » Программирование на PHP » mbstring кривой и глючный

Страниц (1): [1]
 

1. Haron - 02 Января, 2012 - 06:36:33 - перейти к сообщению
Всем привет! С новым годом, счастья Вам, и всего того что вам уже нажелали Улыбка. Ну ладно...

Столкнулся с проблемой:

PHP:
скопировать код в буфер обмена
  1. function detect_enc($str)
  2. {
  3.         $awe = mb_list_encodings();
  4.         unset($awe[0], $awe[1], $awe[2]);
  5.         foreach ($awe as $enctype)
  6.         {
  7.                 if (mb_check_encoding($str, $enctype) === true) return $enctype;
  8.         }
  9.         return false;
  10. }
  11.  
  12. echo detect_enc('Строка_в_кодировке_Windows-1251'); // Напечатало 'byte2be'


И пошёл я сюда, нашёл похожую проблему и кучу незакрытых аж с 2008 года багов. Отписался в камментах к багу на всякий случай...

Однако возникает вопрос, так как же быть-то? Конкренто - интересует способ надёжного определения текста в произвольной кодировке на входе. Я встречал разной степени костылистости решения, встречал способы на паттернах, на основе подсчёта частот символов и их биграмм, и т. д.

А есть-ли какой-то универсальный способ, или какая-то библиотека? Возможно что-то есть в существующих фреймворках? Ребята, это достаточно актуальная проблема, давайте её решим вместе, и выложим это в "уроках"?
2. Champion - 02 Января, 2012 - 09:01:50 - перейти к сообщению
Haron пишет:
Я встречал разной степени костылистости решения, встречал способы на паттернах, на основе подсчёта частот символов и их биграмм, и т. д.
К сожалению, только так.
Можно еще иметь словари буквосочетаний. Тогда повысится степень правильности определиния кодировки текста с реальными словами, но, скорее всего, оно того не будет стоить. Универсального стопроцентного способа определить кодировку произвольной строки нету

 

Powered by ExBB FM 1.0 RC1