Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.02;
Скачать: CL | DM;

Вниз

перекодировка 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.031 c
1-1126429711
Цукор 5
2005-09-11 13:08
2005.10.02
вызов DLL


14-1125946673
Джо
2005-09-05 22:57
2005.10.02
Закат delphimaster.ru


1-1126142152
Иосиф
2005-09-08 05:15
2005.10.02
Бегущая строка с изображениями / текстом


1-1126127492
SergP
2005-09-08 01:11
2005.10.02
Форма (окно) сзади всех.. как сделать?


2-1124780827
Lx
2005-08-23 11:07
2005.10.02
Байты по битам