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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2010, 20:37   #1
Darw1n
Пользователь
 
Регистрация: 27.04.2008
Сообщений: 17
По умолчанию UTF-8 и Indy10

Доброго времени суток уважаемые знатоки Delphi)
Пишу сюда от безысходности. В Indy 10 не работает функция ansitoutf8. Она не меняет исходный текст, а мне надо из
'привет'
получить
'привет'
Подскажите пожалуйста. Буду очень благодарен.
Кстати, на php есть чудесная функция iconv в ней все прекрасно работает, а вот в дельфи такой к сожалению нет.
Darw1n вне форума Ответить с цитированием
Старый 20.06.2010, 21:37   #2
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Код:
UTF8Encode('привет')
kangreon вне форума Ответить с цитированием
Старый 20.06.2010, 21:48   #3
Darw1n
Пользователь
 
Регистрация: 27.04.2008
Сообщений: 17
По умолчанию

Не работает, как было 'привет' так и осталось.
Использую CodeGear™ Delphi® 2009. В дельфи 7 ваш код наверняка заработал бы.
Darw1n вне форума Ответить с цитированием
Старый 20.06.2010, 22:15   #4
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Вот что в сети нашел:
Цитата:
в Delphi 7 тип String совпадает с типом AnsiString, а в Delphi 2009 и Delphi 2010, если не ошибаюсь, тип String - это псевдоним типа WideString.
Поэтому, если в Delphi 2009 строка объявлена так:
Str1 : String;
это эквивалентно:
Str1 : WideString;
Т. е. Str1 после инициализации будет содержать UNICODE текст.
Чтобы содержимое такой строки перевести в формат UTF-8 надо применить функцию:
Код:
var
  StrUCS : WideString; //В Delphi 2009, 2010 можно объявить так: StrUCS : String;
  StrUTF8 : AnsiString;
...
begin
...
  StrUTF8 := UTF8Encode(StrUCS);
...
end;
kangreon вне форума Ответить с цитированием
Старый 20.06.2010, 22:21   #5
Darw1n
Пользователь
 
Регистрация: 27.04.2008
Сообщений: 17
По умолчанию

Спасибо за интерес к теме, однако это я тоже находил и к сожалению это тоже не работает... Слово 'привет' не меняется.
Darw1n вне форума Ответить с цитированием
Старый 20.06.2010, 22:28   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

маленький вопрос, а зачем надо то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.06.2010, 22:30   #7
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

И не заработает. Начиная с Delphi 2009 наблюдаются неисправимые ошибки с кодировками в глубине его ядра.
Попробуйте обновить Indy - возможно ошибки исправили. Или переходите на Delphi 7.
Виталий Желтяков вне форума Ответить с цитированием
Старый 20.06.2010, 22:35   #8
Darw1n
Пользователь
 
Регистрация: 27.04.2008
Сообщений: 17
По умолчанию

2Пепел феникса
Требуется выполнить post-запрос в UTF-8. Есть и другой вариант, пытаюсь его сейчас проработать. Для моих целей также подойдет отправка в шестнадцатеричном виде слово
'привет'
будет аналогично
'%1F%40%38%32%35%42'
И раз уж в UTF-8 преобразовать невозможно на D2009, то как сделать такую трансформацию, не подскажете?
Darw1n вне форума Ответить с цитированием
Старый 20.06.2010, 22:37   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

лучше использовать URL кодирование
http://programmersforum.ru/showthread.php?t=103251
ну вродь самое оно
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.06.2010, 22:41   #10
Darw1n
Пользователь
 
Регистрация: 27.04.2008
Сообщений: 17
По умолчанию

Понятно, спасибо. Все таки придется разрабатывать собственную функцию. Жаль что нет готовой.
Darw1n вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компоненты Indy10 zevs5 Работа с сетью в Delphi 4 19.10.2015 15:44
Ansi в UTF-8 и наоборот UTF-8 в Ansi Alar Работа с сетью в Delphi 3 09.12.2010 17:02
UTF-8 alex171069 Общие вопросы C/C++ 1 18.05.2009 11:57
Проблемы при установке InDy10 Пепел Феникса Компоненты Delphi 2 18.02.2009 16:35