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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UTF8 
V
    Опции темы
RapMan
Дата 13.9.2008, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброе время суток!
У меня есть буффер в котором содаржиться массив символов UTF8 (тоесть символ - по два байта) как мне сделать с етого массива, другой массив только уже с Ansi ? хорошо если б для хранения использовалась та жа переменная массива
массив:
Код

A: array [0..100] of Char;

Зарание спасибо
--------------------
здесь хреновые модераторы...
PM MAIL   Вверх
Matematik
Дата 13.9.2008, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

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



Код

var
  A : array [0..100] of Char;
  B : UTF8String;
  C : string;
begin
  {...}
  B := A; // записать массив в строку
  C := Utf8ToAnsi(B); // UTF8 в Ansi
end;

PM MAIL WWW ICQ   Вверх
RapMan
Дата 13.9.2008, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



проблема в том что входящий массив похож на ето:
6D 00 A6 00 67 00
когда делаю Utf8ToAnsi - то она берет только символ 6D ('m') и  возращает только его, почему?
--------------------
здесь хреновые модераторы...
PM MAIL   Вверх
aktuba
Дата 13.9.2008, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Цитата(RapMan @  13.9.2008,  23:47 Найти цитируемый пост)
проблема в том что входящий массив похож на ето:
6D 00 A6 00 67 00
когда делаю Utf8ToAnsi - то она берет только символ 6D ('m') и  возращает только его, почему? 

Вообще, насколько помню, должно быть наоборот, т.е. 00 6D 00 A6 00 67. 00 впереди означает, что это ANSI-символ, т.е. латинский ;)


--------------------
user posted image
PM MAIL WWW Skype   Вверх
RapMan
Дата 13.9.2008, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



aktuba, сделал как Вы говорили - в результате возращает пустоту... почему?
--------------------
здесь хреновые модераторы...
PM MAIL   Вверх
Matematik
Дата 13.9.2008, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

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



Цитата(RapMan @ 13.9.2008,  22:47)
проблема в том что входящий массив похож на ето:
6D 00 A6 00 67 00
когда делаю Utf8ToAnsi - то она берет только символ 6D ('m') и  возращает только его, почему?

Может это потому что 6D 00 A6 00 67 00 не UTF-8
UTF-8 и unicode string - не одно и тоже.

Код

procedure TForm1.btn2Click(Sender: TObject);
var
  A : array [0..100] of Char;
  B : WideString;
  C : AnsiString;
begin
  FillChar(a, Length(a), #00);
  a[0] := #$6D;
  a[1] := #$00;
  a[2] := #$A6;
  a[3] := #$00;
  a[4] := #$67;
  a[5] := #$00;
  SetLength(B, Length(A) div 2);
  CopyMemory(Pointer(B), @A[0], Length(A) div 2);
//  B := A;
  C := B;
  ShowMessage(a);  // m
  ShowMessage(b);  // m¦g
  ShowMessage(c);  // m¦g
end;


PM MAIL WWW ICQ   Вверх
RapMan
Дата 13.9.2008, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Matematik, Большое спасибо, а как сделать чтобы вместо AnsiString был массив? а то в строке может быть символы которые превращаються в "?"
Зарание спасибо!
--------------------
здесь хреновые модераторы...
PM MAIL   Вверх
RapMan
Дата 14.9.2008, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Пол ночи потратил - ниче толком не вышло  smile 
У меня есть массив:
76 04 63 00 5E 04 36 04 23 04
мне нужно достать String, как я заметил такой же массив есть в ресурсах (тоесть если строку положыть в ресурсы - то будет подобный массив) - вопрос простой Как Дельфи преобразует данный массив в строку когда достает ее с ресурсов?
Зарание очень благодарен!
--------------------
здесь хреновые модераторы...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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