powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / что не нравится функции iconv() и есть-ли какая замена?
25 сообщений из 46, страница 1 из 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
25 сообщений из 46, страница 1 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / что не нравится функции iconv() и есть-ли какая замена?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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