Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1126466360
Stepan
2005-09-11 23:19
2005.10.02
Создание редактора


1-1126537952
WonderfulDay
2005-09-12 19:12
2005.10.02
Hbitmap vs Tbitmap


1-1126025257
ДимДимыч
2005-09-06 20:47
2005.10.02
Аналог TActionList с дополнениями


1-1126614572
Shamansky
2005-09-13 16:29
2005.10.02
Экспорт в Excel


1-1125995662
SuSanin
2005-09-06 12:34
2005.10.02
Разбиение отсканир. на разворот книги на страницы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский