Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Как прекодлировать строку из одной кодировки в другую (http://forum.oszone.net/showthread.php?t=31096)

Vlad Drakula 21-06-2004 18:51 213243

Как прекодлировать строку из одной кодировки в другую?

есть набор сторок, они могут быть все в разных кодировках, как мне перевести их в cp1251, в доке не смог найти такой функции.

Prisoner 21-06-2004 19:24 213244

А
Цитата:

Цитата php manual
convert_cyr_string
(PHP 3>= 3.0.6, PHP 4)

convert_cyr_string - конвертирует один набор символов кириллицы в другой.

Описание
string convert_cyr_string (string str, string from, string to)

Эта функция возвращает данную строку, конвертированную из одного набора символов кириллицы в другой. Аргументы from и to это односимвольные аргументы, представляющие исходный и целевой наборы кириллицы. Поддерживаются типы:

k - koi8-r

w - windows-1251

i - iso8859-5

a - x-cp866

d - x-cp866

m - x-mac-cyrillic

не может помочь отцу русск... тьфу! в общем не может помочь? :)

mar 21-06-2004 19:28 213245

вот легкий и необременительный *:) , но меж тем достаточно распространенный способ на Perl,- его можно пользовать и на PHP. Только тут win2koi, соответственно надо поменять местами то, на что меняется.
Вот Перекодировщик alt<->koi, win<->koi, win<->alt v 1.0 от DH.

Можно еще системными программами пользоваться.
А может быть кто-нибудь предложит что-нибудь покороче?

Добавлено:

Prisoner
вот :) спасибо (это я пока писала, не посмотрела, что ответ уже есть) Пошла учить матчасть (те PHP) :)

Vlad Drakula 21-06-2004 20:05 213246

Prisoner
спасибо, вилимо просто просмотрел...
но вот в чем дело, как я понял ее нельзя использовать с юникодом :(

для юникода есть utf8_decode.
сейчас буду экспериментировать, посомтрим что будет.

Добавлено:

теоретически должно быть так:

$s = utf8_decode( $s );
$s = convert_cyr_string( $s, 'i', 'w' );

но вместо русских букв выдает вопросики.

но при этом:
$s = convert_cyr_string( utf8_decode( utf8_encode( convert_cyr_string( 'a Вдал - ', 'w', 'i' ) ))  , 'i', 'w' );

работает обсолютно нармально!

собственно вопрос:
в чем может быть подстава?
известно что исходная строка в UTF-8 (сам проверял)

mar 21-06-2004 21:09 213247

Посмотри на php.net в обсуждении документации в том числе про utf

Vlad Drakula 22-06-2004 01:19 213248

mar
спасибо, зря я не ходил раньше на этот ресурс надо будет по том какнибуть там по бродить!

vadimiron 27-06-2004 21:35 213249

Vlad Drakula

а iconv не подходит??
эта функция тоже вроде перекодировкой занимается

Vlad Drakula 28-06-2004 08:10 213250

vadimiron
не подходит!

теоретически подходит, но практически текст не перекодирует.
т.е. если с помошью нее создавать текст в utf-8 то обратно она его перекодирует, а если брать из других источноков, то не перикодирует, я ее хотел использовать, но пришлось писать свою функцию.

Dutchman Mihel 28-06-2004 12:01 213251

Vlad Drakula

возможно дело в несвежести iconv библиотеки

Vlad Drakula 28-06-2004 18:52 213252

Dutchman Mihel
врятли!
я поставил PHP 4.3.7

Dutchman Mihel 05-07-2004 16:01 213253

Vlad Drakula

Можно попробовать функцию decode
насколько я понял она работает с utf8 (+ еще 150 кодировок) без проблем

Правда два но
1) в системе должна быть установлена libdecode.so
2) работоспособного decode.dll для win я не нашел

Dutchman Mihel 05-07-2004 22:56 213254

сорри речь была о recode


Время: 02:58.

Время: 02:58.
© OSzone.net 2001-