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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2011, 16:45   #1
Dеlphi
нажмите + на весах
Пользователь
 
Регистрация: 10.11.2010
Сообщений: 30
Радость Кодировка русских символов

C сервер php передаю данные в json формате
исходная строка: "abc абвг"
переданная: "abc \u0430\u0431\u0432\u0433"
что это за кодировка?
если в JavaSctipt написать
Код:
alert("abc \u0430\u0431\u0432\u0433");
то строка отобразиться правильно.
я думаю что UTF-16, как в delphi её перевести в читабельный вид?
Если помог нажми на весы
Dеlphi вне форума Ответить с цитированием
Старый 25.07.2011, 17:16   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

указывайте какая у Вас версия Delphi
(для работы с Unicode это важно)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.07.2011, 17:22   #3
Dеlphi
нажмите + на весах
Пользователь
 
Регистрация: 10.11.2010
Сообщений: 30
По умолчанию

delphi XE Embarcadero® RAD Studio XE
Если помог нажми на весы
Dеlphi вне форума Ответить с цитированием
Старый 25.07.2011, 20:42   #4
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Код:
uses
  StrUtils;

function Convert(const InText: string): string;
var
  i, op: Integer;
  c: Char;
  t, n: string;
begin
  i := 1;
  op := 1;
  while PosEx('\u', InText, i) <> 0 do
  begin
    i := PosEx('\u', InText, i);
    t := t + Copy(InText, op, i - op);
    Inc(i, 2);
    n := Copy(InText, i, 4);
    op := i + 4;
    c := Char(StrToInt('$' + n));
    t := t + WideString(c);
  end;
  t := t + Copy(InText, op, Length(InText));
  Result := t;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := Convert('abc \u0430\u0431\u0432\u0433');
end;
kangreon вне форума Ответить с цитированием
Старый 25.07.2011, 21:03   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от kangreon
Код:
  Caption := Convert('abc \u0430\u0431\u0432\u0433');
kangreon, если не секрет, и что Вы получили в Caption?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.07.2011, 00:21   #6
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
kangreon, если не секрет, и что Вы получили в Caption?
В Caption получился русский текст.
abc абвг

В Delphi 7 пример не работает.

Для старых версий Delphi надо поменять Char на WideChar.

Последний раз редактировалось kangreon; 26.07.2011 в 00:26.
kangreon вне форума Ответить с цитированием
Старый 26.07.2011, 08:39   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Для старых версий Delphi надо поменять Char на WideChar.
ага. проверил. в Delphi 5 отработало на ура!
Цитата:
Код:
var ....  
   c: WideChar;
...
   c := WideChar(StrToInt('$' + n));
Коллега, Вы хотите сказать, что в новых версиях Delphi с WideChar не сработает?
Мне кажется наоборот, в Delphi версии >=2009 char по умолчанию как раз таки и является WideChar!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод русских символов в консоль fs444 Общие вопросы C/C++ 10 23.02.2016 10:29
Вывод русских символов из MSSQL DimaKGD PHP 8 06.06.2015 10:09
Кодировка utf8. Работа с символами. Перевод русских букв в латинских аналог dr.Chas PHP 3 24.03.2011 16:47
Не та кодировка русских символов в программах Linux Alex Cones Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 11 18.09.2009 21:44