Преобразование кодировок

Тема в разделе "Lotus + Java + LS2J", создана пользователем morpheus, 9 авг 2010.

  1. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Доброе всем ...
    Среда:
    Сервер домино(s1) 8.5 и сервер сторонней орг-ции ( неизвесный - s2 )

    через интернет общаемся с помощью XML запросов ( агент на Java )

    я делаю запрос, а в ответ от сервера s2 получаю в формате :
    <?xml version='1.0' encoding='utf-8'?>
    <response>
    <phone value="503123456" />
    <error_code value="1" />
    <error_message>РћС?РёР±РєР° обработки XML-запроса </error_message>
    </response>


    кидаю в "Штирлица"(определяет что UTF-8), получаю преобразованную строку :
    <?xml version='1.0' encoding='utf-8'?>
    <response>
    <phone value="503123456" />
    <error_code value="1" />
    <error_message>Оlибка обработки XML-запроса </error_message>
    </response>

    как переделать текст из UTF-8 какойнибуть удобоваримый?
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Тут, скорее, проблема не в переделке UTF-8 в удобоваримый, а в формировании правильного UTF-8. Похоже, что s2 получает неправильный utf-8. Изначально строка в формате UNICODE, получить из неё utf-8 можно так: someString.getBytes("UTF-8"));
     
  3. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    someString.getBytes("UTF-8")); - пробовал, не помогает

    http://www.exampledepot.com/egs/java.lang/UnicodeToUTF8.html - тут нашел, ковырял ковырял - никак

    да, и s2 ничего не получает, он мне просто таким образом отвечает на мой запрос к нему
     
  4. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    URLEncoder.encode(someStringWithRussianChars, "UTF-8").getBytes("UTF-8"); ???
     
  5. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    пишу
    String UniStr = URLEncoder.encode(s, "UTF-8") ;

    выдаёт
    %3C%3Fxml+version%3D%221.0%22+encoding%3D%22utf-8%22%3F%3E%0A%3Cresponse%3E%0A%0A%3Cerror_code+value%3D%221%22+%2F%3E%0A%3Cerror_message%3E%D0%A0%D1%9B%D0%A1%E2%82%AC%D0%A0%D1%91%D0%A0%C2%B1%D0%A0%D1%94%D0%A0%C2%B0+%D0%A0%D1%95%D0%A0%C2%B1%D0%A1%D0%82%D0%A0%C2%B0%D0%A0%C2%B1%D0%A0%D1%95%D0%A1%E2%80%9A%D0%A0%D1%94%D0%A0%D1%91+XML-%D0%A0%C2%B7%D0%A0%C2%B0%D0%A0%D1%97%D0%A1%D0%82%D0%A0%D1%95%D0%A1%D0%83%D0%A0%C2%B0%3C%2Ferror_message%3E%0A%3C%2Fresponse%3E%0A


    :D
     
  6. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Чем отлаживаем/смотрим? Я, прежде чем вставлять яву в Лотус, сперва доводил до ума в NetBeans'e. Знаю, что можно эклипс прямо к Лотусу прикрутить, но пока не заморачивался, говорят, у него рисовалка форм кривоватая.
    Кстати, UniStr — неправильное имя переменной явы, д.б. uniStr (Sun рекомендует :D).

    P.S. Нужно попробовать "энкодить" только "внутренности" тэга с кириллическим текстом в запросе к s2.
     
  7. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    эээ я кагбэ яву 2й раз в жизни вижу.


    насчет переменных учту, результат выполнения просто записывю в документ ( в поле ) и потом сматрю результат
     
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    стороння организация может обсчаться в ISO-8859-1 (или в чём другом ;) - как-то так ) ...
    и оно гадит :D, давая битый UT-8
    простой эксперимент:
    echo "РћС?РёР±РєР° обработки XML-запроса" | iconv -t cp1251
    даёт ответ:
    Ошибка обработки XML-запроса

    видозный глюкософт вам отвечает в cp1251, а в хидере кажить ютф8
    вот такие весёлые парни эти МСлюбы
     
  9. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    lmike
    Спасибо

    к сожалению на стороннюю орг-цию повлиять не могу, может подскажете как можно решить на моей стороне проблему?!
     
  10. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">в защиту глюкософта</div></div><div class="sp-body"><div class="sp-content">
    Ну, причем тут глюкософт? Это кривые руки разрабов. Такое часто бывает, система работает в одной кодировке, а разраб грит кодировка ответа/страницы будет такой, и пишет туды то, что ему система в своей кодировке дала.
     
  11. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
  12. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Вот и зря, надо им сказать, чтобы они согласовали свой код, а, если будут отнекиваться, тогда уже своими силами бороться. А вдруг сделают как надо )
     
  13. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    lmike прав, такое тоже может быть. В этом случае можно попробовать стороннему серваку отдать запрос в кодировке windows-1251, и в заголовке указать windows-1251, а потом, если не прокатит в заголовке указать utf-8. Хотя это уже изврат.
    И поскольку не уверен, что примечание к посту 6 прочитано, повторюсь:
    Нужно попробовать "энкодить" только "внутренности" тэга с кириллическим текстом в запросе к s2. По крайней мере у меня так работает сервис отправки смс.
     
  14. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    а ты задай себе вопрос - они специально это делают или софт способствует :D
    ютф8 - уже давно поддерживается виндями, но "злонамерянно" впердоливается 1251 дефолтно (можно сослаться на экономию памяти ;) )
    и классы сделаны отдельные!
    не надо их защищать - их мордой в собсвенное дерьмо почаще:
    http://wiki.centercest.ru/doku.php?id=cowo...titive_behavior
     
  15. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    а что мне им предьявить?! Я даже пока не разобрался где нетак
     
  16. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    Morpheus
    можно отдавать им ISO-8859-1
    все русские символы энкодить в 7-бит
    http://stackoverflow.com/questions/655891/...-as-single-byte
    а ответ - обратно
    это самое "правильное" решение
    ибо нек. требования могут не допускають utf8
    и хидер прописывать соответ.
     
  17. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
  18. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    тута ещё вспомнил...
    а случаем не из нотусёвой консоли вывод, нам, Morpheus привёл?
    если да - то она, в винде, соответствует платформенным настройкам (1251), в ссылке выше это описано
     
  19. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    lmike
    неа, это текст который я получил ява - агентом, засунул в поле и сохранил документ
     
  20. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    в промежутке есть несколько действий, одно из них - кодировка файла, дефолтно - "платформенная"
     
Загрузка...
Похожие Темы - Преобразование кодировок
  1. WolfEater
    Ответов:
    0
    Просмотров:
    776
  2. jager
    Ответов:
    1
    Просмотров:
    1.294
  3. PahaStar
    Ответов:
    0
    Просмотров:
    985
  4. PahaStar
    Ответов:
    0
    Просмотров:
    845
  5. ask40
    Ответов:
    0
    Просмотров:
    966

Поделиться этой страницей