Баг iconv? windows-1251 => utf-8 и Русская "Р"

Krishna

Продался Java
Тут было вот что: :)))


Нижеприведенный скрипт при переводе слова "Расширенный" из 1251 в утф8 выдает нечто, что при обратном переводе обращается в пустое место. Грешу на iconv и большую русскую "Р".

iconv support enabled
iconv implementation libiconv
iconv library version 1.9

PHP 4.3.10 Build Date Jan 25 2005 23:20:29

PHP:
<form name="FormName" action="/utf.php" method="post">
<textarea cols="80" rows="25" name="in" type="text"><?php
if($_POST['1'])
   echo iconv( "windows-1251", "utf-8", $_POST['in']);
if($_POST['2'])
   echo iconv(  "utf-8", "windows-1251", $_POST['in']);

 ?></textarea> <br>
<input type="submit" name="1" value="win => utf">
<input type="submit" name="2" value="utf => win">
</form>
-~{}~ 28.02.05 02:40:

ОС FreeBSD 5.3 Apache 1.3.33

iconv установлен как extension
 

neko

tеam neko
iconv( "utf-8", "windows-1251", iconv( "windows-1251", "utf-8", $some ) );

а так ты пробовал?
без форм?

подобные баги в iconv маловероятны
 

Krishna

Продался Java
Я собственно пытаюсь найти ошибку и вполне допускаю, что она не в iconv :)
Остальные слова скрипт конвертил нормально.

Дело в пробеле?
Но он вроде бы передается нормально. :-\

iconv( "utf-8", "windows-1251", iconv( "windows-1251", "utf-8", 'Работа') );

да, нормально работает :(

-~{}~ 28.02.05 03:17:

Я так понимаю некий служебный символ образуется? Вразумите, как заставить обрабатывать скрипт любые тексты.
 

Rezec

По пиву? (socket80)
Если иконв встречает в русском тексте латинскую букву то он останавливается в том месте где её нашел и дальше текст обрезает. Этот баг я обнаружил на рнр 4.3.8 кажется год назад. Используй другой модуль mb string в нем все ок.
 

tony2001

TeaM PHPClub
>Если иконв встречает в русском тексте латинскую букву то он останавливается в том
>месте где её нашел и дальше текст обрезает.
"баг" -> "нормальное поведение iconv, не имеющее к РНР ни малейшего отношения".

-~{}~ 28.02.05 12:51:

If you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded.
 

SiMM

Новичок
> Если иконв встречает в русском тексте латинскую букву то он останавливается в том месте где её нашел и дальше текст обрезает.
Чушь какая.
PHP:
<?=iconv( "utf-8", "windows-1251", iconv( "windows-1251", "utf-8", 'Work Работа') );?>
 

Krishna

Продался Java
Из всего выше сказанного я так и не понял, что происходит с "Р" :((
 

Rezec

По пиву? (socket80)
Согласен с ПХП это не связано. Версию iconv не помню - год назад это было. А вместо нерусского знака iconv ставил знак вопроса ?. И это не чушь, пришлось перейти на mb string. К данному моменту может и исправили.
 

Krishna

Продался Java
SiMM
Хорошо, это оффтоп, но что может быть? Может в форму попадать некий служебный спецсимвол, который будет неправильно интерпретироваться? Как конец строки, или как-то еще? И что можно предпринять, чтобы этого не происходило?
 

Krishna

Продался Java
tony2001
Применив эту опцию получаем "проглатывание" буквы Р, с сохранением остального слова. Это конечно несколько лучше, но всё же нельзя считать решением проблемы ИМХО.

-~{}~ 28.02.05 19:04:

Я так понимаю, что когда Р "раскладывается" в два байта, то один из них имеет некое мистическое, служебное значение, которое не передается формой должным образом.
Как бы это разрешить?
 
Сверху