Diskuze: Kódování HTML UTF8, databáze UTF8mb4 nefunguje čeština.
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 3 zpráv z 3.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Kodovani se nastavuje prikazy:
sql: SET NAMES https://dev.mysql.com/…t-names.html | https://dev.mysql.com/…nection.html
SET NAMES 'utf8mb4' COLLATE 'bogus';
php: header https://www.php.net/header
header('Content-Type: text/html; charset=UTF-8');
Zkus si najit, co delaji ty prikazy, o kterych si myslis, ze delaji, co
chces, aby delali
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- toto muze prohlizec uplne ignorovat a i aplikace tretich stran, pro ne je
zasadni, jake kodovani posle server a to se obvykle meni pomoci header, pokud
chces mit jistotu (jinak spolehas na to, co ma nastavene server a tam ti to
admin prepne na latin1 a ty to pak mas vsude spatne, ale usetril jsi 1 radek php
kodu )
mb_internal_encoding("UTF-8");
Mnohokrát děkuji za pomoc stačilo do douboru database.inc.php nastavit
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci"
Tím se celý problém s kódováním vyřešil.
Přesto jsem do Indexu-php raději ještě vložil i toto.
<?php
header('Content-Type: text/html; charset=UTF-8');
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8'); // zde mi to ale třeba na freehostingu od CZECHIA.COM nezobrazí stránku chyby jsem nevypisoval.
mb_regex_encoding('UTF-8');
Nově upravený soubor database.inc.php vypadí nyní takto
<?php
include './includes/database.inc.php';
class Database {
private $host = DB_HOST;
private $user = DB_USER;
private $pass = DB_PASS;
private $dbname = DB_NAME;
private $dbcharset = DB_CHARSET;
private $dbh;
private $stmt;
public function __construct() {
// Set DSN
$dsn = "mysql:host=" . $this->host . ";dbname=" . $this->dbname . ";dbcharset=" . $this->dbcharset;
// Set options
$options = array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci");
// Create a new PDO instanace
...
...
...
...
...
}
a zde je výpis index.php
<?php
header('Content-Type: text/html; charset=UTF-8');
mb_internal_encoding('UTF-8');
include 'includes/autoloader.inc.php';
include 'includes/citat.php';
?>
<!doctype html>
<html lang="cs" dir="ltr">
<head>
<!-- Meta tags charset -->
<meta charset="utf-8">
...
...
...
...
...
</html>
Snad to někomu pomůže při řešení stejného problému.
Ještě jednou děkuji Peter Mlich
Zobrazeno 3 zpráv z 3.