Portál AbcLinuxu, 13. května 2025 19:04
kód echo htmlspecialchars($row['title'], ENT_XHTML, 'UTF-8');
chyba Notice: Use of undefined constant ENT_XHTML - assumed 'ENT_XHTML' in ... Warning: htmlspecialchars() expects parameter 2 to be long, string given in ...porovnání v mysql sloupce title je utf8_unicode_ci, soubor je v kódování v UTF-8, html na výstupu je taky v UTF-8. Poradí někdo?
Řešení dotazu:
ENT_XHTML
přidána až v PHP 5.4.0 (viz sekce Changelog na stránce s popisem). Pokud používáte starší verzi, není tato varianta k dispozici.
$pdo = new PDO ('mysql:host='.MYSQL_HOST.';dbname='.MYSQL_DB.';charset=UTF-8', MYSQL_USER, MYSQL_PASSWORD);
$pdo->query("SET NAMES `UTF8`");
htmlspecialchars($row['title']);
, nebo použít PHP konstanty, které ve vaší verzi existuji.
ISO-8859-1
(default do verze 5.4.0), tak s kódováním UTF-8
.'<ěščřžýáíéďťňúůĚŠČŘŽÝÁÍÉĎŤŇÚŮ>"<br />
<?php $text='\'<ěščřžýáíéďťňúůĚŠČŘŽÝÁÍÉĎŤŇÚŮ>"'; echo htmlspecialchars($text)."<br />\n"; echo htmlspecialchars($text,ENT_COMPAT,'ISO-8859-1')."<br />\n"; echo htmlspecialchars($text,ENT_COMPAT,'UTF-8')."<br />\n";
$pdo->query("SET NAMES `UTF8`");ale je nutné to udělat ještě před ukládáním dat. V tuto chvíli jsou zřejmě data v DB špatně.
$pdo->query("SET NAMES `UTF8`");
$pdo->query("SET NAMES 'UTF8'");
$pdo->query("SET NAMES UTF8;");
$pdo = new PDO ('mysql:host='.$host.';dbname='.$db.';charset=UTF-8', $user, $password)); nebo $pdo = new PDO ('mysql:host='.$host.';dbname='.$db.';charset=UTF-8', $user, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8"));Díky
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
, ale to ses určitě dočetl v jiném vláknu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.