PDA

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


Vlad Drakula
21-06-2004, 18:51
Как прекодлировать строку из одной кодировки в другую?

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

Prisoner
21-06-2004, 19:24
А 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
вот (http://www.opennet.ru/openforum/vsluhforumID8/214.html) легкий и необременительный *:) , но меж тем достаточно распространенный способ на Perl,- его можно пользовать и на PHP. Только тут win2koi, соответственно надо поменять местами то, на что меняется.
Вот (http://dh.opennet.ru/main.html) Перекодировщик alt<->koi, win<->koi, win<->alt v 1.0 от DH.

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

Добавлено:

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

Vlad Drakula
21-06-2004, 20:05
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
Посмотри на php.net (http://ru.php.net/convert_cyr_string) в обсуждении документации в том числе про utf

Vlad Drakula
22-06-2004, 01:19
mar
спасибо, зря я не ходил раньше на этот ресурс надо будет по том какнибуть там по бродить!

vadimiron
27-06-2004, 21:35
Vlad Drakula

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

Vlad Drakula
28-06-2004, 08:10
vadimiron
не подходит!

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

Dutchman Mihel
28-06-2004, 12:01
Vlad Drakula

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

Vlad Drakula
28-06-2004, 18:52
Dutchman Mihel
врятли!
я поставил PHP 4.3.7

Dutchman Mihel
05-07-2004, 16:01
Vlad Drakula

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

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

Dutchman Mihel
05-07-2004, 22:56
сорри речь была о recode




© OSzone.net 2001-2012