Autor | Zpráva | ||
---|---|---|---|
Tomy Profil |
#1 · Zasláno: 8. 10. 2015, 17:37:53
Ahoj, potřeboval bych poradit, co musím udělat, aby se někomu na nějakém prohlížeči nezobrazovalo místo é třeba é z otočeným háčkem atd. Poradí mi někdo prosím vás jak to mám udělat?
|
||
Trejpa Profil |
#2 · Zasláno: 8. 10. 2015, 17:41:34
Tomy:
Nastavit značku kódování na takové, ve kterém je stránka uložená. Čeština na webu Zkontrolovat, že použité písmo obsahuje i české znaky. |
||
juriad Profil |
#3 · Zasláno: 8. 10. 2015, 17:42:32
Těch problémů je tam více, nejlepší bude poslat odkaz na web, kde ti to nefunguje.
|
||
Tomy Profil |
No konkrétně mi to funguje, ale třeba kámošovi na mobilu to udělalo právě tohle...
Odkaz: www.sdhbecva.cz/index.html Když přidám to UTF-8, tak mi to právě nahodí čtverečky z otazníky. |
||
juriad Profil |
Chybí ti kódování češtiny. Používáš windows-1250. Je tedy potřeba přidat na začátek hlavičky (před všchny popisky):
<meta charset="windows-1250"> Zvaž však, zda by nebylo lepší používat utf-8 (to by vyžadovalo konverzi všech HTML souborů v nějakém editoru; nevíme, který používáš). Přečti si také celou stránku Čeština / cestina |
||
Tomy Profil |
#6 · Zasláno: 8. 10. 2015, 18:01:20
Píšu to přes notepad ++
|
||
juriad Profil |
#7 · Zasláno: 8. 10. 2015, 18:11:45
V Notepad++ by mělo v nabídce Encoding stačit vybrat Convert to UTF-8 without BOM. Ten BOM by ti tam teď nevadil, ale pokud začneš pracovat s PHP, tak tam dělá neplechu. Viz screenshot na superuser.com/questions/762473/ansi-to-utf-8-in-notepad
V každém připadě <meta charset="tvé-zvolené-kódování"> potřebuješ, ať už použiješ windows-1250 nebo utf-8.
|
||
Tomy Profil |
#8 · Zasláno: 8. 10. 2015, 18:23:29
A mám tam teda dát UTF-8, nebo windows-1250?
|
||
Chamurappi Profil |
#9 · Zasláno: 8. 10. 2015, 18:29:50
Reaguji na Tomyho:
Pokud zůstaneš u windows-1250 a doplníš <meta> značku z příspěvku [#5], problém máš vyřešený.
Reaguji na juriada: „Zvaž však, zda by nebylo lepší používat utf-8“ To se zvažuje jak, pokud doposud o kódováních češtiny nic neslyšel? |
||
Tomy Profil |
#10 · Zasláno: 8. 10. 2015, 18:35:57
Má každé nějaké výhody nebo tak něco?
|
||
Trejpa Profil |
#11 · Zasláno: 8. 10. 2015, 18:44:34
Tomy:
V kódování UTF-8 můžeš používat více znakových sad dohromady na jedné stránce (latinku, azbuku, japonštinu). Nevýhodou je trochu větší bitová velikost souboru při použití znaků mimo latinku, znaky nad tabulkou ASCII se totiž skládají ze dvou nebo více Bytů. |
||
Tomy Profil |
No, stránky boudou jenom české, takže mi v tom případě stačí windows-1250.
Na druhou stranu by to asi nevadilo i to UTF-8. Jenomže, když to tam dám tak mi to právě u písmenek s diakritikou hází ty čtverečky s otazníkem. To se dá vyřešit tímkonvertováním v tom editoru? Ono to nějak upraví ten soubor, nebo co to udělá? není to jenom konkrétně pro ten editor a na serveru by to bylo zase bez toho UTF? Nevím jestli mi rozumíte co tím chci říct :D Tak blbě se ptám, protože nevím :D |
||
Trejpa Profil |
Tomy:
Nestačí změnit meta značku. Je třeba i stránku uložit v tomtéž kódování, viz [#7] nastavení kódování v editoru. „Ono to nějak upraví ten soubor, nebo co to udělá?“ Ano. Změna kódování použije jiné Bajty v souboru. Jaké se použijí, o tom je prohlížeč informován právě meta značkou. |
||
Tomy Profil |
Nojo, ale proč mi to tam hází ty otazníky, a
windows-1250 ne?No už vím proč. když si změním to kódování tak mi to tam místo te diakritiky nahází nějaké znaky a já je musím zpátky přepsat :( |
||
Trejpa Profil |
#15 · Zasláno: 8. 10. 2015, 19:03:46
Tomy:
Protože to máš uloženo jako windows-1250 , ne jako utf-8 .
Uloženo v windows-1250 + <meta charset=windows-1250> = čeština
Uloženo v windows-1250 + <meta charset=utf-8> = ?e?tina
Uloženo v utf-8 + <meta charset=windows-1250> = ?e?tina
Uloženo v utf-8 + <meta charset=utf-8> = čeština
Konečně si přečti již dvakrát odkázanou stránku o češtině. |
||
Tomy Profil |
Už sem to udělal. Ale stejně mi to tak dělá pořád. Dám tam windows-1250, s tím si vystačím.
Tomy: Jinak děkuju moc, že jste to semnou přežili a poradili mi :D :) |
||
juriad Profil |
Každý znak, který napíšeš je v souboru uložený jako číslo. Existují tabulky, které říkají, jaké číslo odpovídá jakému znaku. Ty tabulky si můžeš najít na internetu. Jednotlivá kódování se liší tím, jaké znaky umí zakódovat a jaké číslo kterému znaku přiřadí.
* window-1250, windows-1252, latin2, latin1, windows-1251... umí jen 256 znaků, které jejich tvůrce zvolil; většinou jsou tato kódování také pojmenovaná po zemi nebo regionu, jehož všechny znaky obsahují; * utf-8 umí všechny znaky, které kdy budou existovat ať už jde o češtinu, ruštinu, čínštinu, matematické znaky, smajlíky; toto kódování je univerzální. Všichni tvůrci (ehm, počítej řekněme 90. léta a novější) se však shodli na tom, co bude prvních 128 znaků a mezi nimi jsou: malá a velká písmena bez diakritiky, interpunkce, čísla, vše toto: !@#$%^&*() ... To je důvod, proč zlobí ta diakritika, protože ty jako středoevropan jiné znaky mimo rozsah těch prvních 128 často nepoužíváš. Máš tedy uložený soubor na disku, který je plný čísel a kdokoli jej chce zobrazit jako text musí chápat, kterému znaku čísla odpovídají. Musí uhodnout to kódování. V případě webové stránky se to prohlížeči na počítači povedlo, ale prohlížeči na mobilu ne. Z toho důvodu musíš poradit, o jaké kódování se jedná pomocí toho meta tagu. Pak všechny prohlížeče pochopí a zobrazí stránku správně. V prohlížeči si můžeš vynutit zobrazit stránku, jakoby měla jiné kódování (pak uvidíš, že se ti většina diakritiky rozsype). Dříve, když utf-8 vznikalo, tak byla jeho podpora v programech slabší. Dnes mu ale rozumí všechny programy. Většinu věcí, co na internetu najdeš je již v kódování utf-8. utf-8 má výhody: * Lze v něm zapsat každý znak. Nestane se ti jako o jiných kódování, že bys měl smůlu, pokud bys chtěl uprostřed stránky zamachrovat a pozdravit čtenáře arabsky (ano, vždy můžeš vložit obrázek s arabským textem, ale to není ideální). * Všichni mu rozumí; asi nepřesvědčíš programátora v Německu nebo Rusku, aby jeho služba začala příjmat text v kódování windows-1250, když již podporuje utf-8, které může použít každý. a také nevýhody: * Každý znak kromě těch prvních 128 zabírá dvojnásobek nebo trojnásobek místa; spočítej si četnost diakritiky v české větě a dojde ti, že v průměru se jedná o každý x-tý znak. Takže nafouknutí velikosti je často zanedbatelné. V ostatních kódováních je to vždy 1 byte, což je důvod, proč umí reprezentovat jen 256 znaků. * Blbě se předpokládá velikost, třeba když si vyhradíš 60 bytů, tak do nich někdy uživatel může zapsat 60 znaků a jindy jen 20. A nebo naopak, chceš umožnit zadat 60 znaků, musíš si tedy vyhradit prostor 180 bytů, protože uživatel může být vyčuraný a napíše jen ty dlouhé znaky. * Některé funkce v programovacích jazycích predpokládají, že každý znak má jeden byte, což u utf-8 neplatí. Začátečník tyto funkce může omylem použít nevěda si důsledků. |
||
Tomy Profil |
juriad:
Já bych to UTF-8 klidně použil, jenomže když to přepnu na UTF-8, tak mi to tu diakritiku nahází do nějakých znaků, a ty už prohlížeč nevezme, a proto to zobrazí míto písmena otazník. A protože už toho mám bohuželhodně, kvůli tomu že sem nikdy stránky neprogramoval a teď sem to začal, tak sem tam to kódování nedal. A nebo sem to zase dělal špatně. |
||
juriad Profil |
#19 · Zasláno: 8. 10. 2015, 20:14:54
Tomy:
Jasně, pokud ti windows-1250 funguje, není třeba to měnit. Je však dobré vědět, že něco jako kódování existuje a že v něm může být problém. |
||
Tomy Profil |
#20 · Zasláno: 8. 10. 2015, 20:21:37
juriad:
Ještě taková blbá otázka. Nestačí to kódování mít jenom v index.html? |
||
Trejpa Profil |
#21 · Zasláno: 8. 10. 2015, 20:33:26
Tomy:
„Nestačí to kódování mít jenom v index.html?“ Ne. Každá stránka může mít rozdílné kódování. „jenomže když to přepnu na UTF-8, tak mi to tu diakritiku nahází do nějakých znaků“ Většina editorů umí soubor otevřít v jednom kódování a uložit v jiném. |
||
Tomy Profil |
#22 · Zasláno: 8. 10. 2015, 20:34:32
Trejpa:
Už vím kde sem měl chybu, že mi to tam házelo ty znaky. |
||
Bubák Profil |
#23 · Zasláno: 8. 10. 2015, 23:15:20
juriad:
„Nestane se ti jako o jiných kódování, že bys měl smůlu, pokud bys chtěl uprostřed stránky zamachrovat a pozdravit čtenáře arabsky (ano, vždy můžeš vložit obrázek s arabským textem, ale to není ideální).“ Je možné použít číselné entity. Taky to není ideální, ale je to lepší řešení, než obrázek. |
||
Tomy Profil |
#24 · Zasláno: 9. 10. 2015, 15:27:25
Ještě bych se chtěl zeptat. Jak dám to
utf-8 do php? Potřeboval bych to nacpat do formuláře na odesílání emailů, protože mi to dělá bordel.
|
||
Trejpa Profil |
#25 · Zasláno: 9. 10. 2015, 16:08:49
Tomy:
„Jak dám to utf-8 do php?“
Výstupem PHP je pro uživatele HTML stránka. Takže stejně jako v HTML, PHP soubor musí být uložen v UTF-8 a mít meta značku <meta charset=utf-8> . Samotný formulář nemůže mít jiné kódování, než zbytek stránky.
|
||
Tomy Profil |
#26 · Zasláno: 9. 10. 2015, 16:26:44
Trejpa:
A mám to dát do té části PHP nebo HTML? |
||
Tomy Profil |
#27 · Zasláno: 9. 10. 2015, 18:23:56
No, tak u toho php mi to už funguje, ale jedna věc co mi pořád nefunguje je diakritika u Předmětu v emailu. Nevíte co tam mám doplnit?
$subject = "$subject"; $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html; charset=UTF-8" . "\r\n"; $headers .= 'From: <sdhbecva@web.cz>' . "\r\n"; $name = $_POST["name"]; $message = $_POST["message"]; $subject = $_POST["subject"]; |
||
Fisir Profil |
#28 · Zasláno: 9. 10. 2015, 18:57:47
Reaguji na Tomyho:
Máme to ve FAQ. |
||
Časová prodleva: 9 let
|
0