-
Tatarin (12.03.09 23:47) [0]Здравствуйте. Возникла такая задача, с сайта скачивается страница, затем из нее вырезаются некоторые данные. Все это проходит на ура, но. Среди текста встречаются специальные символы, вроде & чтобы их заменить написал такую простую функцию
function HTMLtoANSI(str: string): string;
procedure REP(old, new: string);
begin
str:= StringReplace(str, old, new, [rfReplaceAll, rfIgnoreCase]);
end;
begin
REP('&' , '&');
REP('"' , '\"');
REP('<' , '<');
REP('>' , '>');
REP('¤' , '¤');
REP('¦' , '¦');
REP('§' , '§');
REP('©' , '©');
REP('ª' , 'ª');
REP('«' , '«');
REP('»' , '»');
REP('®' , '®');
REP('°' , '°');
REP('±' , '±');
REP('µ' , 'µ');
REP('¶' , '¶');
REP('·' , '·');
REP('¹' , '¹');
REP('€' , '?');
REP('™' , '™');
REP('†' , '†');
Result:= str;
end;
Не гениальна, но с задачей пока справляется. Но кроме них с тексте редко, но все же выскакивают символы вроде '. Писать подобное моей функции для них будет совсем убогим занятием, подскажите, как выйти из ситуации.
ps. сайт не мой, почему так - не знаю. -
Tatarin (12.03.09 23:49) [1]Форум скушал мои символы. На том сайте символ ' представлен в виде & # 39 ; без пробелов. При этом, там так может быть представлен практически любой символ. Встречал даже букву "Ж" в такой кодировке.
-
> Встречал даже букву "Ж" в такой кодировке.
насколько позволяют скудные знания по html и яваскрипту (читал книжку недавно), получаются они так
(если форум прпустит...)<?xml version="1.0" encoding="cp1251"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>chars</title>
<meta http-equiv="content-type" content="text/html; charset=cp1251" />
<script language="JavaScript" type="text/javascript">
/*<![CDATA[*/
function load() {
var st = '';
for(var i=0; i<=255; i++){ //старые привычки, хотя для юникода неактуально
st = st + '&#'+i+' - '+i+' <br/>'
}
var i = 'Ж'.charCodeAt(0);
st = st + '&#'+i+' - '+i+' <br/>'
document.getElementById('chars').innerHTML = st;
}
/*]]>*/
</script>
</head>
<body onload="load()">
<div id="chars"></div>
</body>
</html>
кстати учти, что при другой кодовой странице символы будут совсем другие... -
смотри ка прошло...
скопируй в текстовый документ переименуй документ в *.html ... думаю понятно. поймешь принцип формирования, поймешь и как разбирать... -
> смотри ка прошло...
хотя и не все :(
вот эти строчкиst = st + '&#'+i+' - '+i+' <br/>'
нужно так (убери пробелы)st = st + '& a m p # '+i+' - & #'+i+' <br/>' -
Tatarin (14.03.09 02:35) [5]Спасибо. Примерно такой метод я и сам хотел использовать. Здесь, конечно, более оптимально, чем у меня.
Хотя, и здесь я думаю производительность будет не очень высока, ведь я могу обрабатывать только "строчки", которых на каждой странице около 2 тысяч.
Немного поразмыслив, решил, что прежде чем заменять, стоит просто проверить, есть ли комбинация в моей строке(они встречаются не так часто). Думаю, это мне поможет, спасибо. -
> Хотя, и здесь я думаю производительность будет не очень высока,
при чем здесь "производительность здесь"? это пример показывающий "сборку" чтобы понять как "разбирать", понять что это всего лишь код символа в текущей для странице кодировке... -
Плохиш © (16.03.09 13:17) [7]
> Tatarin (12.03.09 23:47)
>
>
Почему бы не использовать интерфейс IHTMLDocument2
http://www.swissdelphicenter.ch/de/showcode.php?id=2352