пенсионер
С нами с 07.11.02
Сообщения: 2612
Рейтинг: 1166
|
Добавлено: 28/12/05 в 04:08 |
Спасайте, нервы на пределе...
есть скрипт который берет текст с другого сайта (на русском английском и французком) и создает из них XML фид.
кодировки на сайтах с которых берем инфу - разные, (но это не важно, так как текст все равно вроде в читаемом виде, правда в идеале надо все выводить в UTF-8)
и в итоге мне постоянно вываливаются ошибки типа
Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later.
An invalid character was found in text content.
Валидаторы пишут:
charmap' codec can't decode byte 0x98 in position 1131: character maps to <undefined> (maybe a high-bit character?
Смена кодировок в
<?xml version="1.0" encoding="Windows-1251" ?>
не спасла.
Вопрос, как это пофиксить?
или на крайняк как нахрен снести все знаки, которые отсутствуют в UTF-8, через регэкспы ?
ибо бесят уже эти ошибки конкретно
|
|
|
|
С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362
|
Добавлено: 28/12/05 в 04:41 |
|
|
|
|
пенсионер
С нами с 07.11.02
Сообщения: 2612
Рейтинг: 1166
|
Добавлено: 28/12/05 в 04:52 |
спасиб
я пока так сделал
preg_replace('/\x9./i',' ',$this);
не знаю насколько это коректно и поможет ли с другими языками\раскладками.
а перекодировка - это ПИ,,,Ц. Слишком много ресурсов требо, ибо даже браузеры неспособны автоматом ее определять всегда коректно ))
а нервы берегу.., но мне надо кучу проектов успеть завершить до НГ, а осталось всего 3 дня :-\
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 28/12/05 в 14:11 |
Для кирилицы, поможет вот эта функция:
Код: |
function utf8win1251($s){
$out = $c1 = "";
$byte2=false;
for($c=0;$c<strlen($s);$c++){
$i=ord($s[$c]);if($i<=127)$out.=$s[$c];
if($byte2){
$new_c2=($c1&3)*64+($i&63);$new_c1=($c1>>2)&5;$new_i=$new_c1*256+$new_c2;
if($new_i==1025)$out_i=168;
else{if($new_i==1105)$out_i=184;else $out_i=$new_i-848;}
$out.=chr($out_i);$byte2=false;
}
if(($i>>5)==6){$c1=$i;$byte2=true;}
}
return $out;
}
|
Или использовать iconv, но она толи глючит, толи медленная, непомню почему пришлось отказаться от нее.
P.S. Ох сорри, тока щас заметил по ссылке выше тоже самое... =\
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |