| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > base64 unicode == UTF-7? |
| Автор: null56 2.3.2010, 22:38 |
| Всем привет Возникла задача (и интерес) реализовать упаковку и распаковку текста в base64, изобретать велосипед не стал почитал http://ru.wikipedia.org/wiki/Base64 посмотрел http://base64.sourceforge.net/b64.c Все работает замечательно, НО пока в ASCII диапазоне... далее не уверен ни в чем, как только появляется юникод суть метода под аски(как я понял) собрать из 3 байтовых последовательностей 4 байтовые, посредством выдергивания 6 битовых значений и использования их как индексы в условном алфавите, нехватающие же до 3 байтовых значений заменять дополнителем (для миме это '='). В вики так же сказано, что для передачи юникода (по крайней мере utf16 представления) надо использовать (или не надо) так называемый Изменённый Base64 и к сожалению на этом из вики всё. Вопросы: 1) Можно ли со спокойной душой (!!!) использовать для конвертации в base64 функцию предназначенную для не для юникода, то есть тупо передавать ей мой юникод в виде последовательности байтов и быть уверенным, что потом без всякой потери я смогу это распаковать? 2) Если ответ НЕТ на первый вопрос, то как правильно надо обрабатывать данные переводя их в base64, если у нас они находятся в юникоде (в любом представлении)? Заранее благодарен за помощь ЗЫ: прогнал русские буквы через base64 (linux) и через php функции на локали utf-8 количество символов увеличилось, как и полагается, в 4/3 раза, при использовании моей аски функции с приведением типа размер был куда больше. Хотя значения я вбивал в коде студии, всё равно размер был намного больше, что логично, это непонимание и вызвало потребность создать эту тему |