веселости с кодировками ХЕЛП.

Статус
В этой теме нельзя размещать новые ответы.

lordBlack

Мой дом здесь!
Регистрация
29 Ноя 2007
Сообщения
623
Реакции
267
вообщем собрал парсер, парсер работает как часы, НО
так получилось что часть входящего материала идет в cp1251 часть d KOI-8, а часть в UTF8

соответственно UTF8 отображдается нормально, а останые идут иероглифами.

на вывод использовал такую фишку:
PHP:
<?
//начало парситсо
//вывод:
	ob_start();
	echo ($content); 
	$txt = ob_get_contents();
	$txt = iconv("windows-1251", "utf-8", $txt);
	ob_end_clean();
	echo $txt;
?>

то есть использовал конверт Windows1251 в UTf-8, теперь началось веселье такое:
тот контент что был в windows-кодировке выводится нормально как utf, а тот контент который БЫЛ изначально в кодировке UTF-8 вываливается в крякозаблах...

замкнутый круг вообщем....

P.S. Самое веселое: копирую крякозяблы в буфер -вставляю в документ Notepag++ (по умолчанию windows1251) -тыкаю отобразить как UTF-8 - и вуаля -все отображается....
вот такой бред.
то есть получается что то что было в UTF-8 стало в чем-тонепонятном, которое нужно еще раз из виндуса в ютф отобюражать (не преобразовать а отображать)
а то что было в winows1251 -становится нормлаьным UTF-8


ХЕЕЕЕЛП!!!

---------- Post added at 19:06 ---------- Previous post was at 17:29 ----------

frantz1488 написал(а):
Пишу сюда, ибо нима 40 постов, а помочь хочется, столкнулся с этой же проблемой только для двух кодировок win и utf вот мое решение:
PHP:
<?php
header('Content-Type: text/html; charset=utf-8');
// все будет выводится в utf-8
$text = utf8_convert($text, "w");   // Этап 1 перекодирует $text из UTF-8 в Windows-1251
// С помощью этой функции
function utf8_convert($str, $type)
{
   static $conv = '';
   if (!is_array($conv))
   {
      $conv = array();
      for ($x=128; $x <= 143; $x++)
      {
         $conv['utf'][] = chr(209) . chr($x);
         $conv['win'][] = chr($x + 112);
      }
      for ($x=144; $x<= 191; $x++)
      {
         $conv['utf'][] = chr(208) . chr($x);
         $conv['win'][] = chr($x + 48);
      }
      $conv['utf'][] = chr(208) . chr(129);
      $conv['win'][] = chr(168);
      $conv['utf'][] = chr(209) . chr(145);
      $conv['win'][] = chr(184);
   }
   if ($type == 'w')
   {
      return str_replace($conv['utf'], $conv['win'], $str);
   }
   elseif ($type == 'u')
   {
      return str_replace($conv['win'], $conv['utf'], $str);
   }
   else
   {
      return $str;
   }
}
$text = iconv("windows-1251", "utf-8", "$text");   // Этап 2 перекодирует обратно в UTF-8
echo $text;
?>

Спасибо! буду эксперементировать!
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху