Autor Zpráva
Prefin
Profil
Ahoj všichni.
Sice si už hraju s weby 4 roky, ale pořád se považuji za začátečníka.
Mám web v UTF-8.
Na něm chci umístit toolbárek (teď tam je na Jyxo - http://prefin.cz) který by odkazoval podle volby na Seznam, Google a třeba Jyxo.
No a problém je v tom, že se mi na seznamu nezobrazují v hledaném výraze správně české znaky - tj. houby to najde.
Zkoušel jsem se na technické podpoře dovědět jak sestavil volanou URL včetně proměnných, ale oni se takovými blbinami asi nezabývají.
Na seznam posílám url takto:
http://search.seznam.cz/?q=hledany_text
Myslím si, že kdyby ta url obsahovala informaci o kódování jako např. u Google:
http://www.google.cz/search?q=hledany_text&ie=win-1250&oe=win-1250&btn G.x=10&btnG.y=10,
mohlo by to situaci vyřešit.
Nevíte někdo, jak to poslat?
Díky
Marco
Profil *
(Ak sem te pochopil) Nevim presne vsechny znaky - pisma ale vym ze tyto prikazy funguji vzdy

Specialny znak Zobrazeni
č č
Č Č
ť ť
Ā Ť
ď ď
Ď Ď
ľ ľ
Ľ Ľ
ň ň
Ň Ň
...................................................................... ... (Je ich moc, tyhle vim naspamet).
Tyhle spolehlive viecicky sem sehnal v html editoru: Acehtml6pro urcite se nekde daji sehnat na internetu
Marco
Profil *
(Ak sem te pochopil) Nevim presne vsechny znaky - pisma ale vym ze tyto prikazy funguji vzdy

Specialny znak Zobrazeni
&č č
&Č Č
&ť ť
&Ā Ť
&ď ď
&Ď Ď
&ľ ľ
&Ľ Ľ
&ň ň
&Ň Ň
...................................................................... ... (Je ich moc, tyhle vim naspamet).
Tyhle spolehlive viecicky sem sehnal v html editoru: Acehtml6pro urcite se nekde daji sehnat na internetu
Marco
Profil *
ach boze fakt te znaky za neda znicim .................. ale vim...
kukni si tuhle spravu

(Ak sem te pochopil) Nevim presne vsechny znaky - pisma ale vym ze tyto prikazy funguji vzdy

Specialny znak Zobrazeni
č č
Č Č
ť ť
Ā Ť
ď ď
Ď Ď
ľ ľ
Ľ Ľ
ň ň
Ň Ň
...................................................................... ... (Je ich moc, tyhle vim naspamet).
Tyhle spolehlive viecicky sem sehnal v html editoru: Acehtml6pro urcite se nekde daji sehnat na internetu

je 2 v jej zdrojovem kodu by mnelo byt te znaky - spolehlive
Prefin
Profil
Sorry, chvilku jsem byl bez elektřiny - bouřka.
No, když zadám třeba slovo půjčky, tak se do Seznamu dostane pouze "P|" anebo jsou české znaky nahrazeny entitami "p%u016Fj%u010Dky".
Když stránky přehosím do windows-1250 (na jiném webu) tak je to ok.
Tomu kódování jsem nikdy moc neporozuměl.
Prefin
Profil
Například zase do Atlasu to jde takhle:
http://search.atlas.cz/?q=p%u016Fj%u010Dky&lang=0 a hledaný řetězec je v pořádku.
Na odesílání používám tento script (javascript neovládám - pouze jsem ho opsal a trochu přizpůsobil):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Hledání na webu</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<BODY BGCOLOR="WHITE">
<!-- http://search.centrum.cz/index.php?charset=utf-8&q=auto&mt=2&mts=1&sec =mix&kibitz=0&q-submit=Hledej -->
<!-- http://www.altavista.com/web/results?itag=ody&q=auto&kgs=0&kls=0 -->
<!-- http://www.tipmoto.com/hledat.php?keywords=auto&fid=&keywordsloc=nazev &x=0&y=0 -->
<!-- http://hledej.uzdroje.cz/?s=world_pages&cx=012341354494602586515%3Aefr pbvwxaca&cof=FORID%3A9&q=auto&sa=Search#939 -->
<!-- http://web.volny.cz/najdito/fulltext/?search=auto&lokalita=0&Submit=Hl edat -->
<script language="JavaScript">
<!--
document.write("<form name='search' method='post' action='' onSubmit='return poslat();'>")
document.write("<input type='text' name='text'><input type='submit' name='hledej' value='Hledej!'><br>")
document.write("<input type='radio' name='server' checked>Altavista&nbsp;&nbsp;")
document.write("<input type='radio' name='server' >Seznam&nbsp;&nbsp;")
document.write("<input type='radio' name='server' >Atlas&nbsp;&nbsp;")
document.write("<input type='radio' name='server' >Centrum<br>")
document.write("<input type='radio' name='server' >Zmije (Motoinzerce)&nbsp;&nbsp;")
document.write("<input type='radio' name='server' >Uzdroje&nbsp;&nbsp;")
document.write("<input type='radio' name='server' >Najdi.to&nbsp;&nbsp;")
document.write("</form>")
// -->
</script>
<script language="JavaScript">
<!--
function poslat()
{
var keyword = document.search.text.value;
keyword = uprava_retezec(keyword);
odeslat_server(keyword) ;
return false;
}
function uprava_retezec(text)
{
var retezec="";
for (var i=0; i<text.length;++i){
if(text.charAt(i)==' ') retezec = retezec + "+";
else if(text.charAt(i)=='+') retezec = retezec + "%2B";
else retezec= retezec + escape(text.charAt(i));
}
return retezec;
}

function odeslat_server(text)
{
var server = document.search.server
if (server[0].checked == true ){var url ="http://www.altavista.com/web/results?itag=ody&q="+ text + "&kgs=0&kls=0"};
if (server[1].checked == true ){var url ="http://search.seznam.cz/?q="+ text};
if (server[2].checked == true ){var url ="http://search.atlas.cz/?q=" + text + "&lang=0"};
if (server[3].checked == true ){var url ="http://search.centrum.cz/index.php?charset=utf-8&q=" + text + "&mt=2&mts=1&sec=mix&kibitz=0&q-submit=Hledej"};
if (server[4].checked == true ){var url ="http://www.tipmoto.com/hledat.php?keywords="+ text + "&fid=&keywordsloc=nazev&x=0&y=0"};
if (server[5].checked == true ){var url ="http://hledej.uzdroje.cz/?s=world_pages&cx=012341354494602586515%3Ae frpbvwxaca&cof=FORID%3A9&q=" + text + "&sa=Search#939"};
if (server[6].checked == true ){var url ="http://web.volny.cz/najdito/fulltext/?search=" + text + "&lokalita=0&Submit=Hledat"};
window.open(url, 'nove_okno')

}
// -->
</script>


</BODY>
</HTML>
Petroff
Profil
Možná že to nic nevyřeší (ale ani nezkazí). Ale přečteš-li si článek: Funkce escape a mezinárodní znaky v URL tak zjistíš že je lepší použít JS funkci encodeURI místo escape.

Hele, mě to šlape (aspoň ve firefoxu) =>zjistil jsem, že pro UTF-8 je speciální funkce encodeURIComponent
, která se postará kromě diakritiky i o znaky se zvl.významem v URL: mezera,+,&,=.....
Takže si nahraď funkci uprava_retezce touto jednodušší ale fungující verzí.

function uprava_retezec(text)
{
var retezec="";
for (var i=0; i<text.length;++i) retezec = retezec + encodeURIComponent(text.charAt(i));
return retezec;
}

Kdyby se vyskytly nějaké problémy napiš (ikdyž jsem co se tvorby webu týče začátečník - s javascriptem jsem na tom líp).
Petroff
Profil
Počítám, že to bude fungovat na všech vyhledávačích, které mají v HTML charset=utf-8.
Ty, co mají windows-1250 nebo ISO to zobrazí a POCHOPÍ jako nesmyslné znaky - ty by potřebovaly alternativní funkci upravit a celkově by byly 2 proměnné textA a textU a 2 funkce volej server....jinými slovy: šlo by to zařídit
Prefin
Profil
Díky za pomoc.
Fakt je, že jsem zatím rezignoval a nechal si na webu pouze Jyxo.
On je stejně smysl použití vyhledávacího pole které volitelně odkazuje na několik vyhledávačů diskutabilní.
Ale vrátím se k tomu už proto že mě zajímá jestli to nějak půjde.
Díky
Petroff
Profil
Máš zprovozněné všechny vyhledávače.

<script language="JavaScript">
<!--
var textA,textU;
function poslat()
{
var keyword = document.search.text.value;
textU = uprava_retezec_utf(keyword);
textA = uprava_retezec_ansi(keyword);
odeslat_server() ;
return false;
}

function uprava_retezec_ansi(text)
{
var zn,pos,retezec="";
var dia_znaky="ěščřžýáíéóúůďťňĚŠČŘŽÝÁÍÉÓÚŮĎŤŇ";
var dia_code=[
"EC","9A","E8","F8","9E","FD","E1","ED","E9","F3","FA","F9","EF","9D", "F2",
"CC","8A","C8","D8","8E","DD","C1","CD","C9","D3","DA","D9","CF","8D", "D2"
];
for (var i=0; i<text.length;++i){
zn=text.charAt(i);
pos=dia_znaky.indexOf(zn);
if(zn==' ') zn = "+";
else if(zn=='+') zn = "%2B";
else if(pos!=-1) zn = "%"+dia_code[pos];
else zn = escape(zn);
retezec += zn;
}
return retezec;
}

function uprava_retezec_utf(text)
{
var zn,retezec="";
for (var i=0; i<text.length;++i){
zn=text.charAt(i);
if(zn==' ') zn = "+";
else zn = encodeURIComponent(zn);
retezec += zn;
}
return retezec;
}

function odeslat_server()
{
var server = document.search.server
if (server[0].checked == true ){var url ="http://www.altavista.com/web/results?itag=ody&q="+ textU + "&kgs=0&kls=0"};
if (server[1].checked == true ){var url ="http://search.seznam.cz/?q="+ textU};
if (server[2].checked == true ){var url ="http://search.atlas.cz/?t=a&utf=y&q=" + textU + "&lang=0"};
if (server[3].checked == true ){var url ="http://search.centrum.cz/index.php?charset=utf-8&q=" + textU + "&mt=2&mts=1&sec=mix&kibitz=0&q-submit=Hledej"};
if (server[4].checked == true ){var url ="http://www.tipmoto.com/hledat.php?keywords="+ textA + "&fid=&keywordsloc=nazev&x=0&y=0"};
if (server[5].checked == true ){var url =
"http://hledej.uzdroje.cz/?s=world_pages&cx=012341354494602586515" +
"%3Aefrpbvwxaca&cof=FORID%3A9&q="
+ textU + "&sa=Search#939"};
if (server[6].checked == true ){var url ="http://web.volny.cz/najdito/fulltext/?search=" + textA + "&lokalita=0&Submit=Hledat"};
window.open(url, 'nove_okno')
}
// -->
</script>
</BODY>
</HTML>

======== Popis a výsledek konverze keywordu [ěščřžýáíé] ===========
A. Vyhledávače s charset=utf-8:
textU = uprava_retezec_utf("ěščřžýáíé") = "%C4%9B%C5%A1%C4%8D%C5%99%C5%BE%C3%BD%C3%A1%C3%AD%C3%A9"
( použita funkce encodeURIComponent )
B. Vyhledávače s charset=windows-1250:
textA = uprava_retezec_ansi("ěščřžýáíé") = "%EC%9A%E8%F8%9E%FD%E1%ED%E9"
( použita vlastní konverzní funkce )

>>> ATLAS - ikdyž má charset=windows-1250 - bude fungovat také způsobem A, jelikož jsem opravil search řetězec:
if (server[2].checked == true ){var url ="http://search.atlas.cz/?t=a&utf=y&q=" + text + "&lang=0"};
=========================================================
(@)
Kód je trochu neforemný a nepřehledný (na to jak jednoduchou činnost vykonává).
Nejvíc to vadí při event.změnách vyhledávačů (údaje jsou roztroušeny na více místech).
Navrhuju uložit všechny údaje do jediné proměnné s názvem servery .
----------------------------------------------------------------------
var servery=[];
servery.push(VYHLEDÁVAČ č.1);
servery.push(VYHLEDÁVAČ č.2);
servery.push(VYHLEDÁVAČ č.3);
. . . . . . . . . . . . . . . .
servery.push(POSLEDNÍ VYHLEDÁVAČ);
---------------------------------------------------------------------- -
kde údaje o vyhledávači=položky: (1)Popiska (2)Kódování (3+4)řetězce~části URL
např: servery.push( ["Gooogle", "U", "http://www.google.cz/search?hl=cs&q=", ""] );
a víc by nebylo třeba nastavovat...

(@@)
Mám ještě jeden návrh ohledně ovládání/zobrazení/usnadnění -
myslím totiž že souběžné vyhledávání 1 věci z několika zdrojů se může hodit,pokud nejsi nucen přitom dělat řadu zbytečností "navíc" jako:
- vybrat + pak odeslat
- přepnout se do okna s výsledky + přepnout se zpět (tohle se týká stránek v TABs nebo pokud se okna překrývají)
- vrátit se pokračovat ve výsledcích k prvnímu vyhledávači, a muset klikat >2.>3.>4.stránka s výsledky (tady jsi předtím skončil)
Tyhle zádrhely odstranit - všechno další by už byly bonusy = navíc ! (třebas "předčítání" =načítání další stránky popř. zbývajících vyhledávačů zatímco čteš => abys měl násled.str.s výsledky ihned)

P.S. Při formátování příspěvků může dojít k natržení dlouhých řádků(bez mezer). Prostě se mezi znaky objeví mezera navíc. Kód v JS se může stát nefunkční quli takové prkotiny <== bolestná zkušenost. (radši jsem tomu předešel úmyslným rozkouskováním 1 řetězce - žádný jiný smysl ta úprava řádku server[5] nemá....

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0