|
|
|
Прошу помощи в разборках с хешем (binary, info_hash, getBytes, getSomeGemorArray)
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, возможно вопрос чайницкий, с Явой знаком третий день. В качестве учебной задачи выбрал переписывание ретрекера под яву. Условие - нужно включиться "параллельно" уже работающему на php. Проблема - не могу корректно передать бинарное значение инфохеша в MySQL. Путь приблизительно такой (несущественные детали опускаю): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Проблема в недопонимании. В чем-то туплю, прошу подсказать :) Итак: 1. sIHash.length() - показывает правильную длину хеша (до 20 байт). 2. При System.out.println(sIHash); - выводит что-то очень похожее на нужный мне хеш, при выводе содержит ромбы с знаком "?" (здесь не отображается корректно, поэтому не привел) 3. byte_hash.length уже до 40 байт, что мне уже кардинально непонятно. Соответственно хранимке, принимающей параметр binary(20), это не нравится. Что пробовал: 1. Использовать в методе getBytes другие кодировки. При двухбайтовых - хранимка ругается, что логично, при однобайтовых частью отрабатывает, но ни один вариант не совпадает с тем, что передает $_GET из php. Что примечательно(!!!), в косоли Явы выводится такой вид хеша как надо, повторить его таким методом не удалось. Похоже разница в том, что в консоль идет поток байтов а не символов. Но как его выцепить - не представляю. 2. Передача в параметр хранимки сразу строки с помощью stmt.setString(1, sIHash) не помогает, срока опять приходит в кодировке и вдвое длинней. 3. Пробовал в хранимку отдавать строку с помощью URLDecoder.decode, декодируя инфохеш из URL уже на последнем этапе. Приходит больше 20 байт, в кодировке по умолчанию видимо, uft-8. 4. Еще несколько всяких мелких извращений, описывать которые не буду - стыдно. Дополнение: насколько я понял (в вебе тоже... не силен) до первой выдачи сервером страницы кодировка страниц и URL в частности не определена, используется по умолчанию, поэтому настройки апача и прочего в плане кодировок особого значения не имеют. Работал под убунтой, родная кодировка utf-8. Подскажите пожалуйста, как правильно пихнуть хранимке binary данные в моем случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2012, 03:28:49 |
|
||
|
Прошу помощи в разборках с хешем (binary, info_hash, getBytes, getSomeGemorArray)
|
|||
|---|---|---|---|
|
#18+
Fagrant, в консоли , скорее всего , cp-1251 кодировка, соответственно unicode символы двубайтовые она ломает. Вы уверены, что запрос от клиента приходит в utf-8? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2012, 10:05:48 |
|
||
|
Прошу помощи в разборках с хешем (binary, info_hash, getBytes, getSomeGemorArray)
|
|||
|---|---|---|---|
|
#18+
Продолжение темы здесь: Javatalks.ru Проблема вроде решена, но вопрос не совсем закрыт. Если у кого-то есть комментарии, буду благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2012, 09:33:13 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37777959&tid=2131884]: |
0ms |
get settings: |
18ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 389ms |
| total: | 564ms |

| 0 / 0 |
