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?

Изображение пользователя cblp@cblp.su.

В RFC всё понятно

В RFC всё понятно написано. Приведение к одному регистру, проверка на соответствие символов множеству допустимых, замена недопустимых на допустимые. Вот вы знаете, что в арабских языках есть по три варианта написания одной буквы, а в японском можно несколькими способами записать слово, даже не омонимы, а одно и то же слово?

Спасибо

Спасибо! Теперь все понятно.