Autor Zpráva
tomino
Profil
Dobrý den,

ve své aplikaci používám kódování v UTF-8 - ve skriptech i v databázi. Co se týče zobrazování, vkládání a editace dat, vše funguje bez problému. Při vkládání dalšího záznamu se vždy provede kontrola, zda se tentýž záznam už v databázi nevyskytuje. Pro porovnání řetězců používám funci mb_strtolower($retezec, "auto"). V manuálu PHP z příkladů vyplývá, že nastavení na "auto" je nutné (znaky anglické abecedy se do databáze vloží v kodovani ASCII, i když je atribut nadefinován jako UTF-8). Mnohokrát proběhlo volání funkce mb_strtolower(), která převádí řetězce na malá písmena, v pořádku. Občas se ale stane, že skript vrátí chybu: Warning: mb_strtolower(): Unable to detect character encoding in JMENO_SCRIPTU.PHP a cislo radku. Prošel jsem kód a určitě v něm chyba není. S touhle chybou si nevím rady. Samotné potlačení pomocí @ před funkci asi není nejlepším řešením. Setkal jste se s tím někdo. Jak porovnáváte řetězce v UTF-8. Četl jsem o binárně bezpečném porovnání, ale když jsem ho zkoušel, nefungovalo mi. Předem dík za odpověď.

tomino*
Oswald
Profil
Zkusil bych na začátku volat mb_internal_encoding('UTF-8').

http://php.ftp.cvut.cz/manual/en/function.mb-internal-encoding.php
tomino
Profil
Zkusím to, díky. Ještě jsem z manuálu vyčetl tohle: $str = mb_strtolower($str, mb_detect_encoding($str));
Toto téma je uzamčeno. Odpověď nelze zaslat.

0