Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кодировка 
:(
    Опции темы
MrDmitry
Дата 7.9.2011, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Помогите разобратся с кодировкой. Выполняю запрос

Код

 function TMains.registration(http, key, phone, name, surname, patronamic, birth:string):string;
var
 data: TIdMultiPartFormDataStream;
begin
 data := TIdMultiPartFormDataStream.Create;
  try
     mains.IdHTTP1.get(http+'action=2&session_key='+key+'&phone='+phone+'&name='+name+'&surname='+surname+'&patronymic='+patronamic+'&birth='+birth);
  finally
    data.Free;
  end;
  end;

...

registration(http, sesion_key, phone_news, name_new.Text, surname_new.Text, patronymic_new.Text, dates);



сайт в кодировки utf-8

В базу данных заносятся ??? за место русских символов ((  Перепробовал уже множество различных кодировок, нашел кучу разных функций но ни что мне не помогло (((
PM MAIL   Вверх
ZBugz
Дата 7.9.2011, 19:49 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



Код

function TMains.registration(http, key, phone, name, surname, patronamic, birth:string):string;

Пробуй string на WideString поменять, раз ты с UTF8 работаешь, иначе смысла в этом UTF8 нету.
PM MAIL   Вверх
MrDmitry
Дата 8.9.2011, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Не помогло
PM MAIL   Вверх
MetalFan
Дата 9.9.2011, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Версия делфи какая?
ааа... так в url надо HTTPEncode из HTTPApp какой-нибудь делать для русских символов. Ну или TIdURI.URLEncode, если indy используешь.

Это сообщение отредактировал(а) MetalFan - 9.9.2011, 15:15


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
MrDmitry
Дата 11.9.2011, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Цитата(MetalFan @ 9.9.2011,  15:09)
Версия делфи какая?
ааа... так в url надо HTTPEncode из HTTPApp какой-нибудь делать для русских символов. Ну или TIdURI.URLEncode, если indy используешь.

Использую indy версия дельфи 2010
PM MAIL   Вверх
ZBugz
Дата 11.9.2011, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



Цитата(MrDmitry @ 8.9.2011,  11:24)
Не помогло

Тогда попробуй RawByteString, должно вернуть то что есть полюбому, хотя WideString тоже точно работать должен.

Это сообщение отредактировал(а) ZBugz - 11.9.2011, 18:42
PM MAIL   Вверх
MrDmitry
Дата 11.9.2011, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Теперь за место ??? в бд записывается фф

Добавлено через 1 минуту и 16 секунд
Цитата(ZBugz @ 11.9.2011,  18:41)
Цитата(MrDmitry @ 8.9.2011,  11:24)
Не помогло

Тогда попробуй RawByteString, должно вернуть то что есть полюбому, хотя WideString тоже точно работать должен.

проблема в том что у меня возвращается нормально. А вот записывается в бд не правильно. Если я в бд в ручную изменю данные на русские символы то возвращается как надо и со string
PM MAIL   Вверх
ZBugz
Дата 11.9.2011, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



Цитата

проблема в том что у меня возвращается нормально. А вот записывается в бд не правильно.

Дык это пробелма в БД уже, раз функция возвращает все верно.
Пиши код БД чтоли...
Цитата

Теперь за место ??? в бд записывается фф

Это уже потому что в БД не понимает RawByteString. Единственyое что мона попробывать это привести к String (ANSI) принудительно в самой БД или при передачи в нее.

Добавлено через 4 минуты и 12 секунд
Вот такой с такой же проблемой я боролся с cmd (он же paramstr), там до сих пор ansi используется, только мне из Ansi в Unicode надо было перевести. Пришлось извратится:
Код

var
  FStr: RawByteString;
begin
  AnsiToUtf8(FStr);
  SetLength(FStr, Msg.CopyDataStruct.cbData);
  move(pointer(Msg.CopyDataStruct.lpData)^, FStr[1], Length(FStr));

Иначе тоже получал белеберду.

Это сообщение отредактировал(а) ZBugz - 11.9.2011, 19:56
PM MAIL   Вверх
MrDmitry
Дата 11.9.2011, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Код самой бд я не знаю, т.к её разрабатывал не я и прямого доступа к ней у меня нет, все что есть это транзакция вида 

http://mysayte.ru/index.php?action=2&s...irth=01.01.1901



Сайт и сама бд mysql в кодировки utf-8
поля name, surname, patronymic - utf8_general_ci

Добавлено через 4 минуты и 32 секунды
Цитата(ZBugz @ 11.9.2011,  19:56)
Цитата

проблема в том что у меня возвращается нормально. А вот записывается в бд не правильно.

Дык это пробелма в БД уже, раз функция возвращает все верно.
Пиши код БД чтоли...
Цитата

Теперь за место ??? в бд записывается фф

Это уже потому что в БД не понимает RawByteString. Единственyое что мона попробывать это привести к String (ANSI) принудительно в самой БД или при передачи в нее.

Добавлено @ 20:00
Вот такой с такой же проблемой я боролся с cmd (он же paramstr), там до сих пор ansi используется, только мне из Ansi в Unicode надо было перевести. Пришлось извратится:
Код

var
  FStr: RawByteString;
begin
  AnsiToUtf8(FStr);
  SetLength(FStr, Msg.CopyDataStruct.cbData);
  move(pointer(Msg.CopyDataStruct.lpData)^, FStr[1], Length(FStr));

Иначе тоже получал белеберду.

твой код ругается на CopyDataStruct. Что нужно дописать в uses?
PM MAIL   Вверх
MrDmitry
Дата 11.9.2011, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



В общем сделал банальный перевод русских символов на транслит. 


Спасибо всем за помощь
PM MAIL   Вверх
ZBugz
Дата 12.9.2011, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



Цитата

твой код ругается на CopyDataStruct. Что нужно дописать в uses? 

Это кусок кода, там это дал для смысла...
Цитата

Сайт и сама бд mysql в кодировки utf-8
поля name, surname, patronymic - utf8_general_ci

Видимо передача просиходит через Dll,  а он судя по всему тока ansi понимает. Кстати распространенная проблема с dll, если писал кто нить давно или она стороняя и не поддердивается больше. 

Цитата

В общем сделал банальный перевод русских символов на транслит. 

Ну тоже вариант
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0832 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.