Russian Qt Forum

Qt => Работа с сетью => Тема начата: vbi от Май 06, 2013, 13:21



Название: Непечатаемые символы
Отправлено: vbi от Май 06, 2013, 13:21
У меня есть набор символов в QByteArray, совершенно любых и непечатаэмых в том числе.
У меня есть сайт и PHP страничка. Мне нужно в PHP страничку передать этот набор символов. Как мне это сделать?
Возможности поднять деамон и обрабатывать сокеты нет, только через PHP. Возбожно ли передать любые символы через форму?


Название: Re: Непечатаемые символы
Отправлено: alex312 от Май 06, 2013, 13:26
Base64 вам в помощ


Название: Re: Непечатаемые символы
Отправлено: vbi от Май 08, 2013, 17:32
Спасибо, супер, но честно говоря когда в QT делаю .toBase64() а средствами PHP разкодирую base64_decode() то последовательность байт отличается. Вот привел коды символов, разделенные нижним подчеркиванием.
Вот до кодирования в QT (сам QT раскодирует его нормально после кодирования)

111
_89_100_88_
39_59_52_124_19_22_67_96_108_67_79_75_89_31_24_85_103_86_107_76_24_99_18_114_19_24_19_111_77_74_103_109_24_117_116_114_108_97_97_27_18_90_115_21_23_89_81_78_117_117
_11_75_74_88_32_ 
39_42_62_20_67_124_111_81_110_22_103_97_25_29_105_124_119_115_66_20_100_124_75_16_30_85_71_111_20_124_96_80_25_72_79_105_123_123_98_19_80_107_110_117_117_18_113_24_104_112
_68_102_35_54_50_49_82_0_9_86_40_
115_56_44_126_73_110_102_28_97_43_4_40
_59_91_13_20_124_6_91_104_36_55_31_6_51_93_47_57_

Вот раскодированное сообщение на сайте средствами PHP (жырным выделены отличающиеся участки):
111
54_34_70_
39_59_52_124_19_22_67_96_108_67_79_75_89_31_24_85_103_86_107_76_24_99_18_114_19_24_19_111_77_74_103_109_24_117_116_114_108_97_97_27_18_90_115_21_23_89_81_78_117_117
56_111_35_117_28
39_42_62_20_67_124_111_81_110_22_103_97_25_29_105_124_119_115_66_20_100_124_75_16_30_85_71_111_20_124_96_80_25_72_79_105_123_123_98_19_80_107_110_117_117_18_113_24_104_112
93_43_119_8_29_47_46_63_89_9_22
115_56_44_126_73_110_102_28_97_43_4_40
50_45_112_73_11_98_62_6_25_104_76_108_0_86_122_59_

Если пробую на самом сайте средствами PHP кодировать base64_encode() и декодировать base64_decode() - так работает нормально. Очевидно различаются механизмы кодирования в base64 в QT и PHP.
Как решить эту проблему?


Название: Re: Непечатаемые символы
Отправлено: vbi от Май 10, 2013, 12:14
Все дело в том что разные алгоритми base64.
Я base64 заменил toHex() в QT и pack("H*" , $cryptedMsg) в PHP


Название: Re: Непечатаемые символы
Отправлено: thechicho от Май 10, 2013, 14:59
может алгоритм стандартный, но разная кодировка символов