Форум: "Основная";
Текущий архив: 2005.10.02;
Скачать: [xml.tar.bz2];
Внизперекодировка html кодов в символы Найти похожие ветки
← →
Tab (2005-09-04 22:04) [0]Через web-интерфейс заносятся данные в MySQL базу (на русском и казахском языках) при этом часть букв казахского алфавита кодируется в html коды ӄ и т.д., Эти данные также нужно читать из Delphi.
Как это перекодировать? пока кроме прямого поиска последовательностей &#....; и прямой замены их на нужный Chr(XXX) ничего не придумал.
← →
xayam © (2005-09-04 22:20) [1]а какой кодировке в базе хранятся?
← →
dmitry501 © (2005-09-05 05:15) [2]Вот функция:
(************************************************************************
* *
* (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 <= Max do
begin
if (Value[i] = "&") and (i + 1 < Max) then
begin
Symbol := copy(Value, i + 1, Max);
p1 := Pos(" ", Symbol);
p2 := Pos(";", Symbol);
if (p2 > 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;
← →
Tab (2005-09-05 06:36) [3]win1251, т.е. прочесть их отобразить и потом сли изменил снова перкодировать в html и записать.
2 dmitry501
спасибо попробую
← →
Tab (2005-09-05 13:05) [4]2 dmitry501
не помогло
← →
КиТаЯц © (2005-09-05 13:19) [5]> dmitry501 © (05.09.05 05:15) [2]
А гдеfunction HTMLRemoveTags(const Value: string): string;
????
В студию пожалуйста :) Спасибо.
← →
Tab (2005-09-05 20:54) [6]проблема все еще не решена
← →
Tab (2005-09-06 16:04) [7]Кстати говоря в d7 все тоже в тех же кодах храниться #1210 и т.д.
← →
dmitry501 © (2005-09-07 04:43) [8]КиТаЯц © (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]
А в чем сложность? Приведите пример строки, которую не удается раскодировать.
← →
КиТаЯц © (2005-09-07 08:02) [9]> dmitry501 © (07.09.05 04:43) [8]
Thanks!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.10.02;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.005 c