powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / что не нравится функции iconv() и есть-ли какая замена?
46 сообщений из 46, показаны все 2 страниц
что не нравится функции iconv() и есть-ли какая замена?
    #37930429
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

На PHP пишу давно, но я можно сказать ламер в нем.
Нарвался на проблему.
Опишу упрощенный алгоритм, с которым уже возникают проблемы со стороны сервера.

Отправляю POST - данные из десктопного приложения multipart-form-data (использую виндовый Msxml2.XMLHTTP - версий от 6.0 - до без версии ).
Кодировка Windows-1251, но перед отправкой делаю операцию NOT (побитную инверсию / поразрядное отрицание) над каждым байтом отправляемых данных.
Разумеется, в .htaccess прописано AddDefaultCharset windows-1251 (данные все равно приходят в UTF-8 (хостинг TimeWeb) ).
на PHP пишу такой г-код (упрощенный вариант):
Код: php
1.
2.
3.
4.
5.
6.
$my_data=stripslashes($_POST['data']);
$my_data=iconv('UTF-8','cp1251',$my_data);
$cnt=strlen($my_data); if ($cnt==0) { print 'error'; exit; }
// далее делаю обратное преобразование NOT
$my_dat='';
for ($i=0; $i<$cnt; $i++) { $my_dat.=chr(256+(~ord(substr($my_data,$i,1)))); }


Строка абсолютно корректно преобразуется к первозданному виду (проверял). На клиенте перед отправкой точно так-же делаю NOT.

Так вот, если сделать $cnt=strlen($my_data) ДО вызова функции iconv() , то размер принятых данных совпадает с отправленными (80 Кбайт).
А после вызова iconv() размер мнее 500 байт.

Примечание: последний символ блока данных после вызова iconv() встречается многократно по тексту (это пробел в оригинале), не помню деталь: включительно в строку или нет.

Просьба подсказать, почему iconv() возвращает короткую строку данных.

Спасибо.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930440
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aswsРазумеется, в .htaccess прописано AddDefaultCharset windows-1251 (данные все равно приходят в UTF-8 (хостинг TimeWeb)Это указание вебсерверу на человеческий язык переводится примерно так: если не указано иное, сопровождать отдаваемый контент заголовком charset=windows-1251. Таким образом, к кодировкам самих данных он имеет весьма далекое отношение.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930441
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aswsА после вызова iconv() размер мнее 500 байт.Там кусок реальных данных или сообщение об ошибке? ;-)
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930447
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleaswsА после вызова iconv() размер мнее 500 байт.Там кусок реальных данных или сообщение об ошибке? ;-)кусок реальных данных
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930449
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
причем правильно преобразованных данных, в исходный формат.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930451
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aswsпричем правильно преобразованных данных, в исходный формат.получаемых на клиенте уже...
Вся проблема с обрезкой блока - при вызове iconv()
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930487
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно это. Прикрепите файликом тестовый пример с реальными данными. Чтоб можно было выполнить на своей машине и увидеть проблему. Версию PHP и платформу укажите.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930492
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

Закрытый формат данных и шифрования, не могу привести пример, точно исслюстрирующий проблему.
Как обычно, написал про узкое место, что сам выявил.

Думаю, тут проблема в глюке - преобразование кодировок, незнаю даже, с какой стороны, клиента или сервера.
Сам уже думаю, что глюк со стороны Windows, ибо не привыкать.

Буду менять шифрование, чтобы коды символов оставались в пределах 32-255 кодировки windows-1251.
Только боюсь проблема останется со служебными кодами (13,10,9 и т.д.).
Попробую, отпишусь, если что нарою.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930495
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asws...
Сам уже думаю, что глюк со стороны Windows, ибо не привыкать.
...
Хотя не исключено, что и со стороны PHP, так как перед отправкой зашифрованный файл локально выглядит в полном порядке.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930501
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
документацию конечно же не читаем.
http://www.php.net/manual/en/function.iconv.php
авторIf you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. Otherwise, str is cut from the first illegal character and an E_NOTICE is generated.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930504
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowдокументацию конечно же не читаем.
http://www.php.net/manual/en/function.iconv.php
авторIf you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. Otherwise, str is cut from the first illegal character and an E_NOTICE is generated. Все я читал, этот символ встречается ранее много раз, даже набор символов...,
однако почему-то строка обрывается именно в одном месте, вот это и непонятно.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930506
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повторюсь, на клиенте (отправляемые данные) и на сервере (принимаемые данные) имеют одинаковый размер.
Повторюсь - проблема при вызове iconv

Я очень редко задаю вопросы на проф-форумах,
и обычно ответ выглядит так: это глюк используемого средства для работы.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930510
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия PHP 5.2.12
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930512
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
$my_data=iconv('UTF-8','cp1251//IGNORE',$my_data);


сработает?
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930517
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow
Код: php
1.
$my_data=iconv('UTF-8','cp1251//IGNORE',$my_data);


сработает?а смысл? Если хоть один байт будет пропущен - не расшифруется потом...
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930528
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты трудный.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930531
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowты трудный.я знаю,

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

как знаю и то - что делаю все профессионально, даже если лопатой буду копать, иначе сижу на ж... и впадаю в депрессию и запой...
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930579
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aswsБуду менять шифрование, чтобы коды символов оставались в пределах 32-255 кодировки windows-1251.
Только боюсь проблема останется со служебными кодами (13,10,9 и т.д.).Может Base64 использовать? Там эта проблема решена. Только объем передаваемых данных немного больше получается.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930632
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

Спасибо.
Вчера забыл об этом, башка уже поздно не работала.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930649
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все прекрасно заработало с Base64

iconv() вообще убрал из кода.

Видимо iconv с бинарными данными некорректно работает.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930860
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aswsВсе прекрасно заработало с Base64

iconv() вообще убрал из кода.

Видимо iconv с бинарными данными некорректно работает.
Почему это некорректно? Просто у одного программиста свое видение правильных данных, а у тебя другое.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930867
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПросто у одного программиста свое видение правильных данных, а у тебя другое.
просто кто то не занет ни что такое UTF-8, ни что такое iconv
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930986
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавторПросто у одного программиста свое видение правильных данных, а у тебя другое.
просто кто то не занет ни что такое UTF-8, ни что такое iconvэто в мою сторону намек что-ли?
UTF-8 я прекрасно понимаю, а вот iconv я действительно не знаю, хотя пользую несколько лет.
Думаю, что глюк в этой функции проявляется в процессе преобразования из UTF-8 в windows-1251
И это вполне может быть, независимо от уровня ваших знаний и опыта. Глюк есть глюк.
Вот пример нарытого мной глюка: /topic/924772&hl=
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37930995
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторUTF-8 я прекрасно понимаю
ну тогда расскажи почему у тебя преобразовагте не проходит.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931005
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавторUTF-8 я прекрасно понимаю
ну тогда расскажи почему у тебя преобразовагте не проходит.Как я могу рассказать, если не знаю внутреннюю реализацию функции iconv ???
Этот вопрос надо разработчикам PHP задавать...
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931007
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow,

и вообще странный вопрос...
это не у меня преобразование/конвертация НЕ происходит, а в вызываемой PHP-функции, которая выдает некорректный результат работы.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931025
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asws,

А с чего Вы взяли что iconv() должна переваривать любые входные данные? Прочтите мануал, чтоли... http://www.php.net/manual/ru/function.iconv.php при наличии некорректных символов строка str будет обрезана до первого такого символа, и будет сгенерирована ошибка уровня E_NOTICE.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931029
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

13065057
aswsВсе я читал, этот символ встречается ранее много раз, даже набор символов...,
однако почему-то строка обрывается именно в одном месте, вот это и непонятно.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931050
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы же проигнорировали 13064870 Отсюда не видно ни кода, на котором обрывается, ни полного набора проблемных данных... Обсуждаем сферический байт в вакууме?
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931051
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow,

даже если я ламер в PHP, у меня хватает ума понять, что проблема в iconv ,
данные ДО передачи в эту функцию совпадают на сервере и на клиенте, потому что -
если данные перед вызовом iconv отправить обратно на клиент и на клиенте перекодировать с помощью того-же notepad++ в windows-1251,
то получаю отправляемый файл 1:1

Опуститесь с небес на землю - это я про то, что
не стоит оценивать собеседников по уровню псевдо-знаний той-иной технологии, надо оценивать по уровню умственных способностей.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931054
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asws, если оппонент не понимает насколько важно подготовить воспроизводимый тест , с уровнем умственных способностей все ясно.
Механизмы возникновения ошибок могут быть совершенно необычными, которые вы даже и предположить не могли. Имея под рукой тест кто-нибудь исследует и докопается.
Да, иногда нужно много всего выдернуть из сложного работающего проекта и вам это делать лень.
Но только подобная формулировка снимает все возможные вопросы. Не нужно будет ничего уточнять. Нужно просто запустить и увидеть.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931056
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aswsу меня хватает ума понять, что проблема в iconv Так напишите багрипорт.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931057
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleВы же проигнорировали 13064870 Отсюда не видно ни кода, на котором обрывается, ни полного набора проблемных данных... Обсуждаем сферический байт в вакууме?
Проверьте сами случайный набор символов примерно от 40 до 80 Кбайт, где встречаются коды 13, 10, 9, но не ниже 32,
затем проведите поразрядное NOT-отрицание на клиенте, точно-такое-же как в моем приведенном php-коде (в первом посте),
отправьте на сервер указанным мной методом (Msxml2.XMLHTTP), примените мой код со стороны сервера, указанный в том-же первом посте.
И увидите, что проблема есть!!!

я не сумашедший чтобы бредни писать сюда.
Проблема есть, и проблема я думаю с iconv() .
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931069
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwind,

Вы глубоко заблуждаетесь.
Начиная от того, что не знаете, кто я (это не имеет на самом деле никакого значения),
и заканчивая элементарным невниманием к деталям постов.

Пофлеймить зашли?
Если далее будете продолжать изъясняться непнятно о чем, буду вынужден сообщить модератору.

Просьба писать конкретно по делу, как другие мои собеседники, или покинуть этот топик.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931070
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asws, почему же пофлеймить? моя цель конкретна и понятна : продвигая культуру составления багрепортов, по которым разработчики смогут быстро и легко исправлять проблемы в ПО, я сделаю мир лучше.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931075
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwind
asws...
и заканчивая элементарным невниманием к деталям постов.
...

13064952
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931077
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cmd.exeC:\>Закрытый формат данных и шифрования, не могу привести пример, точно исслюстр
ирующий проблему.
"Закрытый" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

C:\>

Не, проблема не воспроизводится. "Not a bug".
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931082
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИ увидите, что проблема есть!!!
нуну. давай ты для начала разберешься откуда у тебя UTF-8 а потом будешь нам тут про PHP рассказывать?
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931086
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавторИ увидите, что проблема есть!!!
нуну. давай ты для начала разберешься откуда у тебя UTF-8 а пчтом будешь нам тут про PHP рассказывать?
UTF-8 приходит (приходило в первом варианте) в $_POST['data'] PHP, иначе тему не создал-бы.
Твой вопрос "откуда?" уже смысла не имеет, ты-же продвинутая PHP-шница...
Или я что-то путаю?
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931093
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-нибудь может здесь поработать свими отличными мозгами и написать варианты, отчего такое поведение iconv ?
Чтобы знать на будущее, зацепило меня, понимашь...
в долгу не останусь - могу помочь с решением проблем JavaScript (DOCTYPE html5) в разумных пределах.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931098
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aswsКто-нибудь может здесь поработать свими отличными мозгами и написать варианты, отчего такое поведение iconv ?
Чтобы знать на будущее, зацепило меня, понимашь...
в долгу не останусь - могу помочь с решением проблем JavaScript (DOCTYPE html5) в разумных пределах.
Ну конечно.
Как только вы создадите воспроизводимый тест, который можно запустить не пользуясь пиратскими дельфями, а только лишь php, я лично отправлю его разработчикам php. А они отправят разработчикам iconv . И кто-нибудь обязательно разберется. Но сначала вы должны разобраться со своим кодом.

Если в процессе составления теста выяснится, что проблема в неправильном использовании iconv, а сам iconv и php работает как задумано и описано в документации - мы смеяться не будем. Именно такого результата мы и ожидаем.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931099
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор мы смеяться не будем.
я - буду.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931137
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aswsПроверьте сами случайный набор символов примерно от 40 до 80 Кбайт, где встречаются коды 13, 10, 9, но не ниже 32,
затем проведите поразрядное NOT-отрицание на клиенте, точно-такое-же как в моем приведенном php-коде (в первом посте),
отправьте на сервер указанным мной методом (Msxml2.XMLHTTP), примените мой код со стороны сервера, указанный в том-же первом посте.
И увидите, что проблема есть!!!А попрыгать на одной ножке, плюнуть через левое плечо и три раза ударить в бубен, глядя строго на восток, не надо? Весь пример, иллюстрирующий проблему с iconv, может состоять максимум из трех строк:
Код: sql
1.
2.
3.
$str = здесь исходные данные;
$result = iconv(кодировка, кодировка, $str);
var_dump($str, $result);

Все остальное - вода, не имеющая никакого отношения к проблеме.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37931139
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aswsЕсли далее будете продолжать изъясняться непнятно о чем, буду вынужден сообщить модератору.Пока что, непонятно о чем , изъясняетесь Вы. Это называется коротким словом - флуд.
Модератор:
И, как модератор, вынужден предупредить, что если не будет конкретики, тему закрою.
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37932542
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleaswsЕсли далее будете продолжать изъясняться непнятно о чем, буду вынужден сообщить модератору.Пока что, непонятно о чем , изъясняетесь Вы. Это называется коротким словом - флуд.
Модератор:
И, как модератор, вынужден предупредить, что если не будет конкретики, тему закрою.
Закройте пожалуйста тему.
Вопрос обмена данными давно решен. Остальное - флуд. Желания обмениваться вялыми прериканиями нет.

И, кстати, я не использую пиратские системы разработки с 2005 года. Все необходимые лицензии покупаю на свои деньги и для себя.
И у меня почему-то всегда все работает как надо.

С Уваженем ко всем участникам темы,
asws
...
Рейтинг: 0 / 0
что не нравится функции iconv() и есть-ли какая замена?
    #37932552
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: тема закрыта по просьбе топикстартера.
...
Рейтинг: 0 / 0
46 сообщений из 46, показаны все 2 страниц
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / что не нравится функции iconv() и есть-ли какая замена?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]