Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2011, 02:47   #1
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию Как сделать MD5 строки в utf8?

Всем доброго времени суток.

Задача, есть строка в utf8.
Надо получить ее хэш сумму. Все модули которые я находил в интернете работают только с ansi.

Заранее благодарен.

-----------------------
Получилось пока так: храню исходную строку не в utf8string, а в ansistring.
Решение рабочее. Но как-то не очень нравится.

У кого какие предложения и мысли?

Последний раз редактировалось Anfall; 04.08.2011 в 12:16.
Anfall вне форума Ответить с цитированием
Старый 04.08.2011, 13:46   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

а не пофиг ли? UTF8String и так, по сути, однобайтовая строка:

Код:
UTF8String = type string; // неюникодная Дельфи

UTF8String = type AnsiString(65001); // юникодная Дельфи
> храню исходную строку не в utf8string, а в ansistring

совершенно лишнее действие.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 04.08.2011, 14:50   #3
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
совершенно лишнее действие.
Я тоже так думал. Но не прокатывает. Отдает неверный хэш. Все же Utf8string особый тип.


--------
Ну и вот новая проблема.
Когда пытаюсь закодировать строку с символом &, хэш тоже неверный выдает. Видимо и с остальными символами так.

Последний раз редактировалось Anfall; 04.08.2011 в 15:07.
Anfall вне форума Ответить с цитированием
Старый 04.08.2011, 16:14   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Отдает неверный хэш

а, ну так и сказали бы, что для совместимости с какой-то хренью нужен не любой хэш, а хэш именно от тех букв, которые закодированы в UTF-8. Причём не просто букв, а букв именно в той кодировке, которая будет случайно установлена у юзера (если вы явно её не указываете, что, впрочем, ещё хуже).

> Utf8string особый тип

в неюникодной Дельфи он совершенно ничем не отличается от обычной строки (AnsiString), а в юникодной да, отличается тем, что запись и чтение из него автоматически переводит данные в юникод, а потом уже в ansi (если нужно).

> хэш тоже неверный выдает

интересно, а что у вас используется в качестве образца хэша?
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 04.08.2011, 16:54   #5
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию

У меня юникодная делфи. Где-то читал и продругие различия.

Хэш за образец - тот который отдает сервер last.fm. Я пытаюсь использовать их api. И один из параметров при запросе - это особая строка, закодировнная в мд5. Если строка не совпадет -то сервер отдает фэил.

Сейчас с кодированием md5(ansistring) все отлично работает. Но проблема с симвалами типа & ; и т.д.
Anfall вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Http.Get, Парсинг UTF8, знак - отображается как ? Как декодировать? XerSon Работа с сетью в Delphi 6 10.02.2011 08:37
Различие MD5 Delphi и MD5 PHP Viteef Общие вопросы Delphi 14 09.02.2011 11:53
Строку в MD5-hash если Строка является MD5-хешем... Человек_Борща Общие вопросы Delphi 0 13.04.2010 15:27
PHP MD5 и Delphi/C/C++ MD5 в чем отличие? Человек_Борща Общие вопросы Delphi 1 05.04.2010 20:18
Как сделать распознавание строки? Dimo444ka Общие вопросы Delphi 8 01.02.2008 22:14