Autor | Zpráva | ||
---|---|---|---|
dsas Profil * |
#1 · Zasláno: 14. 11. 2021, 23:29:44
Dobrý den,
zkouším manuálně zadat některá slova do databáze a ta má přirozeně problém s českou diakritikou. Mohl bych se zeptat, jestli máte zkušenosti s nějakým online převodníkem, kam bych napsal český text a vyhodilo mi to jeho databázovou podobu? Našel jsem tohle, ale tam nefunguje ě a nejsem si tak jistý, jestli je výsledná podoba v ASCII. |
||
Kajman Profil |
#2 · Zasláno: 15. 11. 2021, 00:05:36
Čeština je široce podporovaná. Co to je za db a jak tam vkládáte ta slova?
|
||
dsas Profil * |
#3 · Zasláno: 15. 11. 2021, 00:08:29
Jde o klasickou MySql databázi, do které vkládám slova skrze PhpMyAdmin
|
||
Kajman Profil |
#4 · Zasláno: 15. 11. 2021, 00:21:40
Jaký je charset u sloupce, kam slova ukládáte?
|
||
dsas Profil * |
#5 · Zasláno: 15. 11. 2021, 00:43:15
Charset by měl být utf8_czech_ci
Přikládám ukázku zápisu dat v databázi a výsledek na webu - ibb.co/P433C5R |
||
Kajman Profil |
#6 · Zasláno: 15. 11. 2021, 07:40:20
To vypadá na pravý opak. Ručně zadané záznamy jsou v pořádku a web nebo prohlížeč převádí diakritiku na html entity.
Html stránka je v jakém kódování? Je stejná kódovací stránka nastavená php příkazem po připojení k db? |
||
Časová prodleva: 3 dny
|
|||
dsas Profil * |
#7 · Zasláno: 17. 11. 2021, 21:34:33
Přiznám se, že jsem tohle řešení v základu zkopíroval už hotové, abych ušetřil nějaký čas a hlavně na konkrétním příkladu lépe pochopil fungování clean URLs. K tomu jsem si jen doplnil nějaké své další funkce, které k chodu potřebuji. Jak ale vidím, tohle řešení mi spíš přidělalo práci..
Procházel jsem si všechny soubory, které se čtením databáze pracují, ale nikde jsem žádný převod textu na jiné kódování neodhalil. Možná by v to našel chybu někdo z vás - tohle je obsah souboru, který zobrazuje výsledný obsah (je to jen část s databází, dále už jen načtu proměnné do šablony). <?php include("db.php"); $str=mysqli_real_escape_string($con,$_GET["str"]); if(isset($str)) { $sql_query="SELECT * FROM blog_posts WHERE str='$str'"; $result_set=mysqli_query($con,$sql_query) or die('error'); $user_posts=mysqli_fetch_array($result_set); $title=$user_posts['title']; $blogpost=$user_posts['content']; } if (!isset($title)) { $title = "404"; $blogpost = "Stránka nebyla nalezena"; } $current_page = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; echo '<link rel="canonical" href="'.$current_page.'" />'; ?> obsah db.php je pak tady: <?php $dbhost = 'xxx'; $dbuser = 'xxx'; $dbpass = 'xxx'; $dbname = 'xxx'; $con=mysqli_connect($dbhost, $dbuser, $dbpass,$dbname) or die (); mysqli_select_db($con,$dbname) or die (); ?> Co se týče charsetu v HTML, mám přímo v šabloně <meta charset="UTF-8"> , takže by měl obsah být v UTF-8. Je potřeba nějak specifikovat požadavek na data v UTF-8 v načítání dat z DB?
|
||
Keeehi Profil |
#8 · Zasláno: 17. 11. 2021, 21:51:53
dsas:
„Je potřeba nějak specifikovat požadavek na data v UTF-8 v načítání dat z DB?“ Velmi pravděpodobně. Dělá se to pomocí mysqli_set_charset. Nové texty pak už snad budou správně, staré možná budeš muset opravit. |
||
Kajman Profil |
Myslím, že staré záznamy to asi nezboří, když jsou zapsané jako htmlentity. Ale doporučil bych najít, kde k převodu dochází (často je tak nastaven WYSIWYG editor), převod zakázat, polit tam utf-8 sadu. A možná převést v databázi htmlentity na normální znaky. Takto třeba nemusí fungovat vyhledávání.
|
||
Časová prodleva: 4 dny
|
|||
dsas Profil * |
#10 · Zasláno: 22. 11. 2021, 00:44:09
Díky moc, při čtení dat z databáze jsem využil doporučované mysqli_set_charset, které mi funguje tak jak má - entity jsou nečitelné, české texty jsou v pohodě. V editoru jsem se musel chvíli hrabat a nakonec jsem ho upravil, takže funguje jak má a odesílá data normálně česky.. Problém je tedy vyřešen a já vám děkuji.. Popravdě jsem do teď vůbec nevěděl, že DB podporuje češtinu a vždy jsem si myslel, že jsou entity správně.. Teď už to vím a dám si na to do budoucna pozor..
|
||
Časová prodleva: 2 roky
|
0