Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Помогите сконвертировать строку   Найти похожие ветки 

 
noob_one ©   (2012-09-21 12:58) [0]

Вот например есть строка "Администратор БД"
В кодировке win1251
Коды символов такие 192 228 236 232 237 232 241 242 240 224 242 238 240 32 193 196
А в нужной мне кодировке
208 144 208 180 208 188 208 184 208 189 208 184 209 129 209 130 209 128 208 176 209 130 208 190 209 128 32 208 145 208 148

Это какой-то юникод, но я не пойму какой :(


 
Медвежонок Пятачок ©   (2012-09-21 13:09) [1]

это утф-8


 
Ega23 ©   (2012-09-21 15:16) [2]

Определись, что тебе нужно: юникод или utf-8, это несколько разные вещи.


 
noob_one ©   (2012-09-24 10:26) [3]

Да, надо получить Utf8


 
noob_one ©   (2012-09-24 10:32) [4]

но функция AnsiToUtf8 возвращает мне строку иероглифов с обилием шапочек, галочек, тильд и апострофов.


 
Anatoly Podgoretsky ©   (2012-09-24 11:22) [5]

> noob_one  (24.09.2012 10:32:04)  [4]

В общем случае AnsiToUtf8 нельзя использовать


 
DVM ©   (2012-09-24 11:38) [6]


> noob_one ©   (24.09.12 10:32) [4]

Сначала твою строку надо перегнать в Unicode, а уж потом делай с ней что хочешь, хошь в Utf-8 сохраняй, хошь еще как.


function AnsiStringToWideString(const Src: AnsiString; CodePage: Word = 0): WideString;
var
 Len: Integer;
begin
 if CodePage = 0 then
   CodePage := GetACP;
 if Src = "" then
   Result := ""
 else
   begin
     Len := MultiByteToWideChar(CodePage, 0, PAnsiChar(Src), Length(Src), nil, 0);
     if Len = 0 then
       RaiseLastOSError;
     SetLength(Result, Len);
     Len := MultiByteToWideChar(CodePage, 0, PAnsiChar(Src), Length(Src),
       PWideChar(Result), Length(Result));
     if Len = 0 then
       RaiseLastOSError;
   end;
end;


А потом можно UTF8Encode


 
palva ©   (2012-09-24 12:03) [7]

Если современная версия Delpi, то можно так:
uses
   Character;
var
   s: AnsiString;
   utf: UTF8String;
   i: Integer;
begin
   s := "Администратор БД";
   utf := s;
   for i := 1 to Length(utf) do
       Write (Ord(utf[i]):4);
 WriteLn;


Используется текущая кодовая страница.


 
noob_one ©   (2012-09-24 17:57) [8]

Спасибо.

Проблема была решена другим образом - удалось изменить кодировку источника.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.077 c
15-1345936846
mechanic
2012-08-26 03:20
2013.03.22
Подскажите пожалуйста, на каком языке такое реализовать ?


15-1343987497
AV
2012-08-03 13:51
2013.03.22
Quip 2012. Как раз и навсегда изменить порт с 433 на 5190?


2-1329678422
Zheksonz
2012-02-19 23:07
2013.03.22
Почему на панели TCategoryPanelGroup не виден TLabel?


15-1350940105
kilkennycat
2012-10-23 01:08
2013.03.22
Какой бесплатный и мощный текстовый редактор?


15-1283595915
xayam
2010-09-04 14:25
2013.03.22
Обновилась база веток DMSearch





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский