Кодировка utf8, нужно преобразовать в 1251

Sufir

Я не волшебник, я только учусь
Кодировка utf8, нужно преобразовать в 1251

PHP5, Apache 1.3
Люди, подскажите пожалуйста. У меня есть строка в utf8. Нужно вывести пользователю (cp1251). При выводе в браузер - кракозябры.
iconv() utf8_decode() эффекта не дают или превращают все символы в вопросики.
Просмотрел форум (и не только этот), кучу сайтов, официальную справку PHP - ничего не нашел, а что нашел не работает.
 

SiMM

Новичок
> iconv() utf8_decode() эффекта не дают или превращают все символы в вопросики.
Ёж - птица гордая. Пока не пнёшь - не полетит.
Тут нет телепатов, и эта фраза никому ни о чём не говорит.
 

Sufir

Я не волшебник, я только учусь
Вот текст в utf8 - строка
Каким образом мне сделать, что бы он был в win1251 - "строка".
PHP:
$Result = utf8_decode('строка');
Выдаёт - ??????
 

MustDie

Новичок
хм...
строка строкР- уже касяченная... ты ее с браузера копировал?
если да... то конечо будут ???? ?? ???

-~{}~ 04.03.06 21:44:

PHP:
$Result = utf8_decode("ñòðîêà ");
выводит "строка"...

а у тебя совсем другие символы...
 

SiMM

Новичок
> Выдаёт - ??????
А что, должно что-то другое?
Идёшь в мануал по [m]utf8_decode[/m] и смотришь, с какой кодировкой работает эта функция и думаешь, какое она может иметь отношение к CP-1251.
Потом идёшь в мануал по [m]function.iconv[/m] и делаешь то, что тебе нужно.

MustDie, не понимаешь - не лезь. Научись вначале свои проблемы решать. Самостоятельно.
 

Sufir

Я не волшебник, я только учусь
Само собой смотрел. Говорю-же кучу всего перепробовал и пересмотрел поэтому уже и utf8_decode пробовать стал.
Приношу извинения. Допустил ошибочку на более ранней стадии. Конвертировал уже не то. Действительно с iconv() порядок.
PHP:
$Result = iconv("UTF-8", "CP1251", "строка");
Спасибо за помощь.
 

sidor

Новичок
Если iconv на сервере не установлен - этот вариант не прокатит. Я написал пару функций для преобразования строк. Если кому понадобится - юзайте на здоровье :)

http://sidor.nnov.ru/str2utf.txt
http://sidor.nnov.ru/utf2str.txt
 

Sufir

Я не волшебник, я только учусь
Да, я уже столкнулся с этим. Локально всё работало а на двух хостингах, на которых пытался установить - нет.
Решил проблему подобным же образом как подсказал sidor.
А для перекодировки в KOI8-R в 1251 пользовался convert_cyr_string - у обоих хостеров работало.
 

SiMM

Новичок
> Если iconv на сервере не установлен
http://phpclub.ru/faq/encodings
И, кстати, заниматься переводом UTF-8 в Unicode было вовсе необязательно - достаточно вообще одной таблицы и [m]strtr[/m]а, а остальное можно сделать при помощи [m]convert_cyr_string[/m]а.
 

sidor

Новичок
Вариантов может быть куча. Я написал функции в соответствии с rfc. Они позволяют кодировать в utf ЛЮБУЮ кодировку и также декодировать из utf в ЛЮБУЮ кодировку. Не только кириллицу. Достаточно только массив соответствия кодировка-UCS-4 добавить. Использование же strtr и convert_cyr_string такого не позволяет.
Вобщем я считаю, что в моих функциях есть определенная прелесть... :)
 

Sufir

Я не волшебник, я только учусь
Да, я видел http://phpclub.ru/faq/encodings. Сначала там и искал.
Вообще, причина того что у меня возникли проблемы - непонятная кодировка результата с xml.Яндекс. Возможно кто сталкивался.
Собственно результат возвращается в UTF8, но названия разделов яндекс-каталога и названия регионов после конвертирования:
PHP:
$Result = iconv("UTF-8", "CP1251", $CatYandex);
возвращаются в KOI8-R (остальная чась результата нормально перекодируется и возвращается в CP1251). Пользовательские функции возвращают то-же самое, в том числе и предложенная в http://phpclub.ru/faq/wakka.php?wakka=encodings/encodings3&v=1d3g - проверял. Хотя:
PHP:
$ResultEncoding = mb_detect_encoding($CatYandex);
Показывает что $CatYandex в UTF8.
Поэтому требуется дополнительная перекодировка.
PHP:
$Result = iconv("KOI8-R", "CP1251", iconv("UTF-8", "CP1251", $CatYandex));
// Возвращает нормальную строку в CP1251
Я сначала перекодировал пользовательской функцией весь результат, затем получил названия каталогов|регионов а затем их уже перекодировал дополнительно.
PHP:
$YandexResult = UTF8toCP1251($YandexResult);       //из UTF8 в win1251
$CatYandex = convert_cyr_string($CatYandex, k, w); //из KOI8-R в win1251
Если кто столкнётся с xml.Яндекс - знайте.

-~{}~ 10.03.06 15:11:

К стати подскажите пожалуйста, если кто знает, пару статей по работе php+xml. Что-то толковой информации маловато, ничего не нахожу. Т.е. информация есть, и в официальной справке php инфы достаточно. Хотелось-бы хорошую(-ие) статью или примеры.
 

SBM

Новичок
Автор оригинала: Sufir
Да, я уже столкнулся с этим. Локально всё работало а на двух хостингах, на которых пытался установить - нет.
Решил проблему подобным же образом как подсказал sidor.
А для перекодировки в KOI8-R в 1251 пользовался convert_cyr_string - у обоих хостеров работало.
вопрос от совсем деревянного:
установлен никс, на нем все: апач, пхп, мускул
таблица в mysql в utf8_general_ci
делаю оттуда выборку по запросу - получаю ????
 
Сверху