![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
перекодировка 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]а какой кодировке в базе хранятся?