Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

перекодировка html кодов в символы [D7, WinXP]


Tab ©   (2005-09-04 22:04:00) 

Через web-интерфейс заносятся данные в MySQL базу (на русском и казахском языках) при этом часть букв казахского алфавита кодируется в html коды ӄ и т.д., Эти данные также нужно читать из Delphi.
Как это перекодировать? пока кроме прямого поиска последовательностей &#....; и прямой замены их на нужный Chr(XXX) ничего не придумал.


КиТаЯц   (2005-09-07 08:02:00) [1]

> dmitry501 ©   (07.09.05 04:43) [8]

Thanks!


dmitry501   (2005-09-07 04:43:00) [2]

КиТаЯц ©   (05.09.05 13:19) [5]
Вот конец юнита из [2]

{-------------------------------------------------------------------------------
-------------------------------------------------------------------------------}

function HTMLRemoveTags(const Value: string): string;
var
 i, Max: Integer;
begin
 result := '';
 Max := Length(Value);
 i := 1;
 while i <= Max do
 begin
   if Value[i] = '<' then
   begin
     repeat
       inc(i);
     until (i > Max) or (Value[i-1] = '>');
   end else
   begin
     result := result + Value[i];
     inc(i);
   end;
 end;
end;

{-------------------------------------------------------------------------------
-------------------------------------------------------------------------------}

end.

Tab   (05.09.05 20:54) [6]
А в чем сложность? Приведите пример строки, которую не удается раскодировать.


Tab   (2005-09-06 16:04:00) [3]

Кстати говоря в d7 все тоже в тех же кодах храниться #1210 и т.д.


Tab   (2005-09-05 20:54:00) [4]

проблема все еще не решена


КиТаЯц   (2005-09-05 13:19:00) [5]

> dmitry501 ©   (05.09.05 05:15) [2]

А где
function HTMLRemoveTags(const Value: string): string;????

В студию пожалуйста :) Спасибо.


Tab   (2005-09-05 13:05:00) [6]

2 dmitry501
не помогло


Tab   (2005-09-05 06:36:00) [7]

win1251, т.е. прочесть их отобразить и потом сли изменил снова перкодировать в html и записать.
2 dmitry501
спасибо попробую


dmitry501   (2005-09-05 05:15:00) [8]

Вот функция:
(************************************************************************
*                                                                      *
*   (C) 2002-2004 Antoine Potten                                       *
*   software@antp.be - http://www.antp.be/software                    *
*   antoine@buypin.com - http://www.buypin.com                        *
*                                                                      *
************************************************************************
*                                                                      *
*   This program is free software; you can redistribute it and/or      *
*   modify it under the terms of the GNU General Public License        *
*   as published by the Free Software Foundation; either version 2     *
*   of the License, or (at your option) any later version.             *
*                                                                      *
*   This program is distributed in the hope that it will be useful,    *
*   but WITHOUT ANY WARRANTY; without even the implied warranty of     *
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the      *
*   GNU General Public License for more details.                       *
*                                                                      *
************************************************************************)

unit functions_html;

interface

{-------------------------------------------------------------------------------
-------------------------------------------------------------------------------}

function HTMLDecode(const Value: string): string;
function HTMLRemoveTags(const Value: string): string;

{-------------------------------------------------------------------------------
-------------------------------------------------------------------------------}

implementation

uses
 SysUtils;

 //functions_str;

{-------------------------------------------------------------------------------
-------------------------------------------------------------------------------}

const
 Symbols: array [32..255] of string = (
                       'nbsp',   '',       'quot',   '',       '',       '',       'amp',    '',
   '',       '',       '',       '',       '',       '',       '',       '',       '',       '',
   '',       '',       '',       '',       '',       '',       '',       '',       '',       '',
   'lt',     '',       'gt',     '',       '',       '',       '',       '',       '',       '',
   '',       '',       '',       '',       '',       '',       '',       '',       '',       '',
   '',       '',       '',       '',       '',       '',       '',       '',       '',       '',
   '',       '',       '',       '',       '',       '',       '',       '',       '',       '',
   '',       '',       '',       '',       '',       '',       '',       '',       '',       '',
   '',       '',       '',       '',       '',       '',       '',       '',       '',       '',
   '',       '',       '',       '',       '',       '',       '',       '',       '',       '',
   '',       '',       '',       '',       '',       '',       '',       '',       '',       '',
   '',       '',       '',       '',       '',       '',       '',       '',       '',       '',
   '',       '',       '',       '',       '',       '',       '',       '',       '',       '',
   '',       'iexcl',  'cent',   'pound',  'curren', 'yen',    'brvbar', 'sect',   'uml',    'copy',
   'ordf',   'laquo',  'not',    'shy',    'reg',    'macr',   'deg',    'plusmn', 'sup2',   'sup3',
   'acute',  'micro',  'para',   'middot', 'cedil',  'sup1',   'ordm',   'raquo',  'frac14', 'frac12',
   'frac34', 'iquest', 'Agrave', 'Aacute', 'Acirc',  'Atilde', 'Auml',   'Aring',  'AElig',  'Ccedil',
   'Egrave', 'Eacute', 'Ecirc',  'Euml',   'Igrave', 'Iacute', 'Icirc',  'Iuml',   'ETH',    'Ntilde',
   'Ograve', 'Oacute', 'Ocirc',  'Otilde', 'Ouml',   'times',  'Oslash', 'Ugrave', 'Uacute', 'Ucirc',
   'Uuml',   'Yacute', 'THORN',  'szlig',  'agrave', 'aacute', 'acirc',  'atilde', 'auml',   'aring',
   'aelig',  'ccedil', 'egrave', 'eacute', 'ecirc',  'euml',   'igrave', 'iacute', 'icirc',  'iuml',
   'eth',    'ntilde', 'ograve', 'oacute', 'ocirc',  'otilde', 'ouml',   'divide', 'oslash', 'ugrave',
   'uacute', 'ucirc',  'uuml',   'yacute', 'thorn',  'yuml'
 );

function IndexStr(const AText: string; const AValues: array of string): Integer;
var
 i: Integer;
begin
 Result := -1;
 for i := Low(AValues) to High(AValues) do
   if AText = AValues[i] then
   begin
     Result := i;
     Break;
   end;
end;
 
function HTMLDecode(const Value: string): string;
var
 i, Max, p1, p2: Integer;
 Symbol: string;
 SymbolLength: Integer;
begin
 result := '';
 Max := Length(Value);
 i := 1;
 while i 0) and ((p2 < p1) xor (p1 = 0)) then
     begin
       Symbol := Copy(Symbol, 1, pos(';', Symbol) - 1);
       SymbolLength := Length(Symbol) + 1;
       if Symbol[1] '#' then
       begin
         Symbol := IntToStr(IndexStr(Symbol, Symbols) + 32);
       end else
         Delete(Symbol, 1, 1);
       Symbol := char(StrToIntDef(Symbol, 0));
       result := result + Symbol;
       inc(i, SymbolLength);
     end else
       result := result + Value[i];
   end else
     result := result + Value[i];
   inc(i);
 end;
end;


xayam   (2005-09-04 22:20:00) [9]

а какой кодировке в базе хранятся?


Наверх

Титульная страница Поиск, карта сайта Написать письмо