НавигацияВход для пользователейОблачкоПоследние комментарии
|
XMPP и stringprepЗдравствуйте! Начал разбираться с протоколом XMPP и наткнулся на stringprep ( http://www.ietf.org/rfc/rfc3454.txt ). Прочитал RFC, но так и не понял, зачем он нужен. Помогите, пожалуйста.
Опубликовано bulatka@jabber.ru в пн, 2009-08-17 17:36. categories [ ]
|
Stringprep profile
Stringprep profile определяет отображение некоторого подмножества юникодных строк в множество юникодных строк. Используется, во-первых, для проверки правильности JID (точнее, три профиля отдельно проверяют узел, сервер и ресурс) - если строка принадлежит области определения профиля, то она правильная. И во-вторых, для сравнения строк - если образы двух строк совпадают, то эти строки считаются эквивалентными. Необходимость в stringprep возникает потому, что одинаковые по смыслу юникодные строки можно записывать очень разными способами.
Пример
А Вы можете привести пример? И я не понял насколько это нужно/критично. Я так понял stringprep - это довольно дорогая операция, и каждый JID подлежит проверке.
Самый простой
Самый простой пример stringprep - это приведение к нижнему регистру в узле и доменной части JID (BULATKA@JABBER.RU и
- эквивалентные). Операция действительно дорогая, но деваться некуда. Работаешь с юникодом - будь добр, работай правильно.
Java
В яве, насколько я знаю, проблем с юникодом нет и подобный JID можно привести к нижнему регистру простым методом String.toLowerCase(). Достаточно в сервере сперва приводить все JID'ы к нижнему регистру и можно работать с ними. Зачем еще нужен stringprep?
В RFC всё понятно
В RFC всё понятно написано. Приведение к одному регистру, проверка на соответствие символов множеству допустимых, замена недопустимых на допустимые. Вот вы знаете, что в арабских языках есть по три варианта написания одной буквы, а в японском можно несколькими способами записать слово, даже не омонимы, а одно и то же слово?
Спасибо
Спасибо! Теперь все понятно.