Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с кодировкой UTF-8
 
 автор: $OMEGA   (16.04.2005 в 08:41)   письмо автору
 
 

Пишу страничку статистики, после urldecode() , все впрлне нормально, кроме забугорных поисковиков google, msn, итд запрос выдают на UTF-8, а статистика с наших в win-1251 и все это на одной странице, естественно или то или другое в крякозябрах, Попробовал iconv(), не помогло, следующим шагом была попытка использовать convert_cyr_string(), но там нет формата UTF, как быть? Выручайте!!!

   
 
 автор: cheops   (16.04.2005 в 11:49)   письмо автору
 
   для: $OMEGA   (16.04.2005 в 08:41)
 

Сходная система решается в нашем счётчике PowerCounter, который можно свободно загрузить из раздела downloads http://www.softtime.ru/info/downloads.php, чтобы создать унифицированный скрипт, не зависящий от iconv можно воспользоваться следующей функцией
<?php
function utf8_win($s)
{
    
$s=str_replace("\xD0\xB0","а",$s);  $s=str_replace("\xD0\x90","А",$s);
    
$s=str_replace("\xD0\xB1","б",$s);  $s=str_replace("\xD0\x91","Б",$s);
    
$s=str_replace("\xD0\xB2","в",$s);  $s=str_replace("\xD0\x92","В",$s);
    
$s=str_replace("\xD0\xB3","г",$s);  $s=str_replace("\xD0\x93","Г",$s);
    
$s=str_replace("\xD0\xB4","д",$s);  $s=str_replace("\xD0\x94","Д",$s);
    
$s=str_replace("\xD0\xB5","е",$s);  $s=str_replace("\xD0\x95","Е",$s);
    
$s=str_replace("\xD1\x91","ё",$s);  $s=str_replace("\xD0\x81","Ё",$s);
    
$s=str_replace("\xD0\xB6","ж",$s);  $s=str_replace("\xD0\x96","Ж",$s);
    
$s=str_replace("\xD0\xB7","з",$s);  $s=str_replace("\xD0\x97","З",$s);
    
$s=str_replace("\xD0\xB8","и",$s);  $s=str_replace("\xD0\x98","И",$s);
    
$s=str_replace("\xD0\xB9","й",$s);  $s=str_replace("\xD0\x99","Й",$s);
    
$s=str_replace("\xD0\xBA","к",$s);  $s=str_replace("\xD0\x9A","К",$s);
    
$s=str_replace("\xD0\xBB","л",$s);  $s=str_replace("\xD0\x9B","Л",$s);
    
$s=str_replace("\xD0\xBC","м",$s);  $s=str_replace("\xD0\x9C","М",$s);
    
$s=str_replace("\xD0\xBD","н",$s);  $s=str_replace("\xD0\x9D","Н",$s);
    
$s=str_replace("\xD0\xBE","о",$s);  $s=str_replace("\xD0\x9E","О",$s);
    
$s=str_replace("\xD0\xBF","п",$s);  $s=str_replace("\xD0\x9F","П",$s);
    
$s=str_replace("\xD1\x80","р",$s);  $s=str_replace("\xD0\xA0","Р",$s);
    
$s=str_replace("\xD1\x81","с",$s);  $s=str_replace("\xD0\xA1","С",$s);
    
$s=str_replace("\xD1\x82","т",$s);  $s=str_replace("\xD0\xA2","Т",$s);
    
$s=str_replace("\xD1\x83","у",$s);  $s=str_replace("\xD0\xA3","У",$s);
    
$s=str_replace("\xD1\x84","ф",$s);  $s=str_replace("\xD0\xA4","Ф",$s);
    
$s=str_replace("\xD1\x85","х",$s);  $s=str_replace("\xD0\xA5","Х",$s);
    
$s=str_replace("\xD1\x86","ц",$s);  $s=str_replace("\xD0\xA6","Ц",$s);
    
$s=str_replace("\xD1\x87","ч",$s);  $s=str_replace("\xD0\xA7","Ч",$s);
    
$s=str_replace("\xD1\x88","ш",$s);  $s=str_replace("\xD0\xA8","Ш",$s);
    
$s=str_replace("\xD1\x89","щ",$s);  $s=str_replace("\xD0\xA9","Щ",$s);
    
$s=str_replace("\xD1\x8A","ъ",$s);  $s=str_replace("\xD0\xAA","Ъ",$s);
    
$s=str_replace("\xD1\x8B","ы",$s);  $s=str_replace("\xD0\xAB","Ы",$s);
    
$s=str_replace("\xD1\x8C","ь",$s);  $s=str_replace("\xD0\xAC","Ь",$s);
    
$s=str_replace("\xD1\x8D","э",$s);  $s=str_replace("\xD0\xAD","Э",$s);
    
$s=str_replace("\xD1\x8E","ю",$s);  $s=str_replace("\xD0\xAE","Ю",$s);
    
$s=str_replace("\xD1\x8F","я",$s);  $s=str_replace("\xD0\xAF","Я",$s);
    return 
$s;
}
?>

Грубо, но работает :)))

   
 
 автор: $OMEGA   (17.04.2005 в 01:13)   письмо автору
 
   для: cheops   (16.04.2005 в 11:49)
 

Огромное спасибо, но не совсем то , что надо - у меня есть строка типа: РєРѕР± , я понимаю, и многие со мной, что это не совсем UTF, или даже совсем не UTF, но при принудительной перезагрузке браузера в UTF-8 - он везде покажет крякозябры кроме этой фразы, там будет написано: "коб ", см мою переписку на вовебе: [url][/url]http://forum.woweb.ru/topic13869.html , конечно можно пойти по вашим стопам и написать собственную функцию, и даже не в падлу, но не ужели в РНР, ничего не предусмотрено по этому поводу, я понимаю проблема редкая, но если совета не получу, прийдется писать, результаты постараюсь прислать вам, но если кто нашел решение --- PLEASE HELP!!!!!

   
 
 автор: cheops   (17.04.2005 в 01:36)   письмо автору
 
   для: $OMEGA   (17.04.2005 в 01:13)
 

Да вообще говоря похоже не UTF-8... не могли бы вы сохранить в этой кодировке что-нибудь в файл и прикрепить его к сообщению, так как в тексте побъётся содержимое... может удасться найти решение?

   
 
 автор: $OMEGA   (17.04.2005 в 01:58)   письмо автору
 
   для: cheops   (17.04.2005 в 01:36)
 

Все тут ничего не бьётся в броузере: Вид - Кодировка - UTF-8 , как писал будут крякозябры, но в начале сообщения будет : " коб " - единственное читаемое, могу ввести более длинные запросы, для эксперимента, прихожу к мысли - может русские запросы перекодировать в UTF, но както не патриотично, хотя проще чем писать новую функцию!

   
 
 автор: cheops   (17.04.2005 в 02:17)   письмо автору
 
   для: $OMEGA   (17.04.2005 в 01:58)
 

Чего-то не хватает... я пишу на локалке
<?php
  
echo "РєР_Р+";
?>

и получается белиберда, тут действительно "коб"... вот почему бы неплохо нетронутую строку иметь для эксперимента, так как браузер невидимые символы может не пропечатывать или ещё чего сделать...

   
 
 автор: $OMEGA   (17.04.2005 в 02:38)   письмо автору
 
   для: cheops   (17.04.2005 в 02:17)
 

Туто все собаки и порылись - нетронутая строка, это:

@ $url = $_SERVER['HTTP_REFERER'];
@ $sersh = $url['query']; 

и сортировка статистики происходит от тудова, как быть прямо не знаю, как заметил с такой билебирдой никто не сталкивался!!! У меня в платной статистике - они крякозябры выдают!!! Потому и решил писать свою статистику!

   
 
 автор: $OMEGA   (22.04.2005 в 06:34)   письмо автору
 
   для: $OMEGA   (17.04.2005 в 02:38)
 

Проблему решил через iconv() - пытался конвертировать из utf в iso и напрасно, поменял на windows-1251 и все заработало, спасибо всем за помощь, тему можно закрывать, хотя как говорится - на ошибках учатся!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования