Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
-19 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 20
1

Перекодировка текста

07.05.2015, 02:54. Показов 4422. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую.

На входе есть строка, содержащая символы такого вида:

\u0418\u0433\u043d\u043e\u0440

На выходе нужно получить строку, переведенную из юникода в кириллицу.
Касаемо примера выше, должен быть результат такой:

Игнор

Помогите с процедурой
Пытался какие встроенные функции юзать по типу TEncoding.Convert, но в ней не очень разобрался + на вход ей побайтовая строка идет, что не есть гуд.

Строка может содержать любые клавиатурные символы (кириллицу,латиницу, спец. символы).
Нужно, чтобы прога сумела их все привести в божеский вид!

В общем, нужен наиболее быстрый вариант перевода.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2015, 02:54
Ответы с готовыми решениями:

Перекодировка текста из OEM 866 в UTF-8 или Ansi с загрузкой в Memo
Всем привет! Помогите пожалуйста. У меня в исходниках есть текстовые файлы в кодировке OEM 866,...

перекодировка
задача: перекодировка текстового файла в код морзе и обратно. срочно надо,помогите кто чем сможет

Перекодировка строки
Мне нужно переводить строку в число и обратно (полученную строку чисел опять в строку текста)....

Перекодировка текста
Здравствуйте! Не знаю в каком разделе создать тему, напишу здесь. Возникла такая ситуация:...

3
5784 / 4526 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
07.05.2015, 04:49 2
Лучший ответ Сообщение было отмечено andreloster как решение

Решение

Delphi
1
2
3
4
5
6
    i:=pos('\u',s);
    while i>0 do
    begin
      s:=Copy(s,1,i-1) + Char(StrToIntDef('$'+Copy(s,i+2,4),32))+copy(s,i+6, Length(s));
      i:=pos('\u',s);
    end;
1
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
07.05.2015, 04:53 3
Если формат фиксирован (все последовательности 6-байтные), то считываете три пары '\u', 'СP', 'СL', где '\u' - признак строки в Unicode, 'СP' - кодовая страница и 'СL' - код литеры. В зависимости от кода страницы, делаете подстановку для кода литеры (Unicode --> ANSI).

Если текст смешаный - ANSI + Unicode, то читаете посимвольно. Если текущий символ '\' и следуюший за ним 'u', то следующие две пары обрабатываете также, как в предыдущем случае.
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
07.05.2015, 10:28 4
Лучший ответ Сообщение было отмечено andreloster как решение

Решение

Для любых версий Delphi:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//Функция выполняет преобразование:
//\u042d\u0442\u043e\u0020\u043f\u0440\u0438\u043c\u0435\u0440' -> 'Это пример'.
function UStrToWideStr(const aUStr : String) : WideString;
var
  i, j, Len : Integer;
begin
  Len := Length(aUStr) div 6;
  SetLength(Result, Len);
  j := 3;
  for i := 1 to Len do
  begin
    Result[i] := WideChar( StrToInt('$' + Copy(aUStr, j, 4)) );
    Inc(j, 6);
  end;
end;
 
{Проверка.
В Memo1 записан текст в следующем виде: \u043f\u0440\u0438\u043c\u0435\u0440
В Memo2 выводится результат преобразования текста из Memo1.}
procedure TForm1.Button1Click(Sender: TObject);
begin
  {Если String = AnsiString, то преобразование WideString -> AnsiString выполнится
  автоматически при присвоении.}
  Memo2.Text := UStrToWideStr( Trim(Memo1.Text) );
end;
Добавлено через 5 минут
Пример от volvo для версий Delphi 2009 и выше:
Delphi
1
2
3
4
5
6
7
8
9
10
11
uses DBXJSON;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  s : string;
  JSON: TJSONValue;
begin
  s := '"\u0421\u043a\u0430\u0439\u0440\u0438\u043c"';
  JSON := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(s), 0);
  ShowMessage(JSON.ToString);
end;
1
07.05.2015, 10:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2015, 10:28
Помогаю со студенческими работами здесь

Перекодировка текста
Здравствуйте! Есть такая задача: написать программу-конвертер. Есть исходный текст, и нужно при...

Перекодировка текста
Здравствуйте! Не знаю в каком разделе создать тему, напишу здесь. Возникла такая ситуация:...

Перекодировка текста
Здравствуйте! Есть такая задача: написать программу-конвертер. Есть исходный текст, и нужно при...

Перекодировка текста в Word
Помогите пожалуйста разобраться. Нужно создать макрос что бы он перекодировал неправильный текст в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru