Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Charset

Dobrý deň :)
Mám menší problém s tým že mi nezobrazuje znaky s diakritikou ale iba samé otázniky.
Čiže namiesto "áéóô" je "????".
Potreboval by som do tých skriptov zahrnúť znakovú sadu ale neviem ako a kde.
Bude to len niečo jednoduché ale keďže neviem písať skripty a kopírujem ich tak som z toho zmagorený trochu.
Za pomoc veľmi pekne ďakujem :)

<?php
$titleshare=urlencode($title);
$url=urlencode('');
$summary=urlencode('áéóô');
$image=urlencode('');
?>


<a onClick="window.open('www.facebook.com/sharer.php?s=100&amp;p[title]=<?php echo $titleshare;?>&amp;p[summary]=<?php echo $summary;?>&amp;p[url]=<?php echo $url; ?>&amp;p[images][0]=<?php echo $image;?>','sharer','toolbar=0,status=0,width=548,height=325');" href="javascript: void(0)">BLA BLA BLA</a>
Předmět Autor Datum
kto ti kde pise otazniky? Jak vypada ten URL? V jakom kodovani mas vytvoreny ten subor scriptu?
MM.. 21.07.2013 21:24
MM..
no... ono to má otvoriť okno na zdielanie na facebook a má to vyzerať takto http://www.daddydesign.c…
charset 22.07.2013 08:50
charset
Odpovede na otázky od MM.. mali vyzerať nejako takto: 1. Otázniky to píše na stránke Facebooku, kto…
los 22.07.2013 09:34
los
Ďakujem :) to som myslel ...dám sem celý ten zdroják aby si sa v tom vyznal čo vlastne chcem <head>…
charset 22.07.2013 12:26
charset
Teraz si odpovedal na otázku č. 2, ešte chýba odpoveď na otázku č. 3. Z URL adresy vidíme, že je zl…
los 22.07.2013 12:48
los
Wueeej :D konečne sa dostávame kam chceme :D Problém nastáva tým že neviem písať skripty a neviem ak…
charset 22.07.2013 13:00
charset
pri ukladaní je vždy utf-8
charset 22.07.2013 13:01
charset
už mi to ide ..neviem ako sa to dalo dokopy ale ide to ... stačilo mi ten súbor vymazať na webe a re…
charset 22.07.2013 13:09
charset
Ďakujem za pomoc :) poslední
charset 22.07.2013 13:09
charset

no...
ono to má otvoriť okno na zdielanie na facebook a má to vyzerať takto
http://www.daddydesign.com/wordpress/wp-content/up loads/2011/06/sharegraph.jpg
avšak ja keď v tom PHP dám do $summary (v podstate je jedno kam) nejaké písmená s diakritikov a otvorí sa okno tak sú tam "?" namiesto písmen s diakritikov.
Sem som skopíroval zdrojový kód a všetko je na jednej stránke kde je charset utf-8 ... neviem či si myslel to alebo či som nejaký charset nastavil priamo nejakému skriptu.
Nie.... žiadny skript nemá nastavený charset lebo neviem ako na to a ktorému to nastaviť.

Odpovede na otázky od MM.. mali vyzerať nejako takto:

1. Otázniky to píše na stránke Facebooku, ktorá vytvorí príspevok podľa parametrov v URL.
Na toto si odpovedal správne.

2. URL vyzerá takto:
sharer.php[title]=%xx%xx...&p[summary]=...
To sme sa zatiaľ nedozvedeli. Podľa URL by sme vedeli hneď povedať, že je zle zakódovaná. To vieme síce aj teraz, ale vedeli by sme, aké kódovanie sa použilo.

3. Skript je uložený v kódovaní napr.: Windows-1250
To sme sa ešte nedozvedeli, ale predpokladáme.
Hodnoty v premenných by mali byť v UTF-8. Keď máš skript uložený v inom kódovaní, tak sa použije to iné kódovanie. Takže buď ulož ten skript v UTF-8 (to je tá lepšia možnosť), alebo použi iconv.

Ďakujem :) to som myslel ...dám sem celý ten zdroják aby si sa v tom vyznal čo vlastne chcem

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-

<!-- skript kde si vyberiem z akej stránky chcem získať title -->
<?php
$Url="www.azet.sk";
?>

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-

<!-- skript ktorý získa title zo stráky (skript vyššie obsahuje URL stránky)-->
<?php
function getTitle($Url){
    $str = file_get_contents($Url);
    if(strlen($str)>0){
        preg_match("/\<title\>(.*)\<\/title\>/",$str,$title);
        return $title[1];
    }
}
$title=getTitle($Url);
?>

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-

<!-- Skript kde si vyberiem jednotlivé premenné ktoré budú dosadené do URL zdieľania na FB -->
<?
// "$title" pochádza z toho skriptu ktorý zisťuje title z nejakej stránky
$titleshare=urlencode($title); 
// sem sa dáva URL na stránky ktorý chcem zdieľať
// teraz napríklad opäť bedem chceť zdieľať azet.sk
$url=urlencode($Url);
// sem sa dáva popis stránky ktorú idem zdieľať
// problém je že pri title zo stránky azet.sk funguje diakritika
// ale teraz prestane
$summary=urlencode('Môžem sa opýtať prečo mi sem dáva tie "?" ?!');
// obrázok ktorý bude pri zdielanej stránke
$image=urlencode('randomobrazok.jpg');
?>

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-

<!-- Tuna sa vytvára tá URL z ktorej vznikne tá stránka zdieľania a parametre ťahá zo skriptu vyššie -->
<a onClick="window.open('www.facebook.com/sharer.php?s=100&amp;p[title]=<?php echo $titleshare;?>&amp;p[summary]=<?php echo $summary;?>&amp;p[url]=<?php echo $url; ?>&amp;p[images][0]=<?php echo $image;?>','sharer','toolbar=0,status=0,width=548,height=325');" href="javascript: void(0)">
Zdieľat to na FB!
</a>

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
<!-- Samozrejme takto tie skripty nebudú na stránke. Budú sa rôzne includovať. -->
</body>

takto to vyzerá po kliknutí
https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak- frc1/1001365_4881341524392_2057191727_n.jpg

toto je celá URL ktorá vytvorila obrázok vyššie
https://www.facebook.com/sharer/sharer.php?s=100&p %5Btitle%5D=Azet.sk+-+port%C3%A1l%2C+kde+je+v%C5%B Edy+najviac+%C4%BEud%C3%AD&p%5Bsummary%5D=M%F4%9Ee m+sa+op%FDta%26%23357%3B+pre%26%23269%3Bo+mi+sem+d %E1va+tie+%22%3F%22+%3F%21&p%5Burl%5D=http%3A%2F%2 Fwww.azet.sk&p%5Bimages%5D%5B0%5D=randomobrazok.jp g

Snáď som to konečne podal správne a dá sa z toho vysomáriť :D

Teraz si odpovedal na otázku č. 2, ešte chýba odpoveď na otázku č. 3.

Z URL adresy vidíme, že je zle zakódovaná. Napr. parameter pre summary začína slovom "Môžem". V tvojej URL je to zakódované ako "M%F4%9Eem", takže hneď vidíme, že sa nepoužilo UTF-8 ale iné kódovanie. V UTF-8 majú znaky s diakritikou 2 bajty a vyzeralo by to takto: "M%C3%B4%C5%BEem". V znakovej sade Windows-1250 má písmeno "ô" kód 0xf4 a písmeno "ž" kód 0x9e, takže je to zakódované vo Windows-1250.

Takže teraz nám môžeš odpovedať na otázku č. 3 a tvoja odpoveď bude Windows-1250. No a na to ti napíšem, že:

Hodnoty v premenných by mali byť v UTF-8. Keď máš skript uložený v inom kódovaní, tak sa použije to iné kódovanie. Takže buď ulož ten skript v UTF-8 (to je tá lepšia možnosť), alebo použi iconv.

Edit: Teraz vidím, že title ťaháš z inej stránky. Teoreticky by si mal kontrolovať, v akom kódovaní ti došiel výsledok (z HTTP hlavičky, ak nie je uvedený, tak z HTML dokumentu). Následne by si mal použiť iconv. Ale prakticky to stačí aj takto.

Edit2:

žiadny skript nemá nastavený charset lebo neviem ako na to a ktorému to nastaviť.

Nastavuje sa to v editore, ktorý používaš. Pri ukladaní súboru máš možnosť zvoliť jeho kódovanie.

Wueeej :D konečne sa dostávame kam chceme :D
Problém nastáva tým že neviem písať skripty a neviem ako tam nejaké to iconv dať aby to dokázalo samé prehodiť tie znaky do tvaru v akom to bude funkčné.
Preto ťa žiadam o pomoc či by si mohol niečo do toho kódu pripísať aby to šlapalo :)
Ďakujem

Zpět do poradny Odpovědět na původní otázku Nahoru