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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2011, 12:51   #1
Bright-rider
Форумчанин
 
Регистрация: 09.07.2010
Сообщений: 102
Подмигивание Перевести текст в UTF8

Нужно отправить сообщение на сайт в UTF8.
Английские буквы сервер принимает без преобразований.
А русские никак не хочет принять. Весь гугл перечитал, ничего не помогает. Кто сталкивался с таким?
Спасибо
Bright-rider вне форума Ответить с цитированием
Старый 01.09.2011, 13:02   #2
fucil
Форумчанин
 
Регистрация: 24.02.2010
Сообщений: 148
Восклицание может поможет !

вот те такие функции UTF8Encode, UTF8Decode и AnsiToUtf8, Utf8ToAnsi
может они и не в тему но все же ну а там может что то придумаешь !
fucil вне форума Ответить с цитированием
Старый 01.09.2011, 13:03   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Если Дельфи до 2009, то, если исходная строка в юникоде, то WideCharToMultiByte(CP_UTF8, ... ), иначе сначала MultiByteToWideChar(кодировочка, ....), а потом уже WideCharToMultiByte(CP_UTF8, ... ).

Если Дельфи 2009 или старше, то:

Код:
var
  U: UTF8String;
begin
  U := 'фыва'; // готово
  //
  // для запущенных случаев
  U := AnsiToUtf8Ex(astring, кодировочка);
end;
> Весь гугл перечитал, ничего не помогает. Кто сталкивался с таким?

С таким плохим гуглом сталкиваться не доводилось )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 01.09.2011, 15:02   #4
Bright-rider
Форумчанин
 
Регистрация: 09.07.2010
Сообщений: 102
По умолчанию

Цитата:
Сообщение от fucil Посмотреть сообщение
вот те такие функции UTF8Encode, UTF8Decode и AnsiToUtf8, Utf8ToAnsi
может они и не в тему но все же ну а там может что то придумаешь !
Пробовал с самого начала - не помогло.

veniside, нашёл функцию:
PHP код:
 function AnsiToUtf8Ex(SAnsiString;CodePageCardinal CP_ACP):UTF8String;
var
  
WSWideString;
  
iLenCardinal;
begin
  iLen 
:= MultiByteToWideChar(CodePage0PChar(S), Length(S), Nil0);
  
SetLength(WSiLen);
  
MultiByteToWideChar(CodePage0PChar(S), Length(S), PWideChar(WS), iLen);
  
iLen := WideCharToMultiByte(CP_UTF80PWideChar(WS), iLenNil0NilNil);
  
SetLength(ResultiLen);
  
WideCharToMultiByte(CP_UTF80PWideChar(WS), Length(WS), PChar(Result), iLenNilNil);
end
Но и она не помогла
Поясню:
Мне нужно отправить комментарий в жж блог.
Английский текст отправляет нормально, а с русским беда. Ошибка 500 или badcontent.
Bright-rider вне форума Ответить с цитированием
Старый 01.09.2011, 15:36   #5
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

UTF8Encode должна помочь
fate вне форума Ответить с цитированием
Старый 01.09.2011, 15:41   #6
Bright-rider
Форумчанин
 
Регистрация: 09.07.2010
Сообщений: 102
По умолчанию

Цитата:
Сообщение от fate Посмотреть сообщение
UTF8Encode должна помочь
Пробовал не помогло
Bright-rider вне форума Ответить с цитированием
Старый 01.09.2011, 15:55   #7
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Ошибка 500 или badcontent
Кодирование в UTF-8-то тут причём? Проблема в коде отправки.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 01.09.2011, 16:32   #8
Bright-rider
Форумчанин
 
Регистрация: 09.07.2010
Сообщений: 102
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Кодирование в UTF-8-то тут причём? Проблема в коде отправки.
Как может быть проблема в самом запросе, если английское сообщение отправляет, а русское нет?
Bright-rider вне форума Ответить с цитированием
Старый 01.09.2011, 16:34   #9
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

В том и проблема. Может сайт не UTF-8 ждёт, а ты ему UTF-8 суёшь. Может ты кодировку не указал. Может ты свои данные отправляешь не двоично, а как текст, так что кто-то другой твой уже готовый UTF-8 колбасит. Может ещё тысяча причин быть.

А преобразование в UTF-8 работает правильно - во всех указанных выше случаях.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести текст программы с Pascal на С ??? $T@LKER Помощь студентам 4 14.09.2010 17:44
Перевести текст с бортового компа Volt Свободное общение 4 08.09.2010 20:06
C#:Перевести текст в Unicode Gogent Помощь студентам 6 15.07.2010 15:02
Перевести текст marinchik Свободное общение 15 02.07.2008 11:40
как перевести дату в текст zetrix Microsoft Office Excel 0 31.10.2006 07:37