ich bin auf ein Problem gestossen, und ich denke es handelt sich hierbei um einen bug in php.
Vielleicht hab ich einfach nur etwas übersehen =P das werdet ihr mir dann schon sagen
Also.. ich möchte aus einer Datenbank auslesen, und zwar muss das Charset utf-8 sein.
Die DB und tables sind als utf-8 definiert, und auch in den config files von php und mysql ist dies explizit angeführt.
(phpinfo und phpmyadmin bestätigen dies auch)
Führe ich nun
- Code: Select all
<?php
$db = new mysqli("localhost", "root", "...", "...");
if (mysqli_connect_errno()) {
printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error());
exit();
}
echo var_dump($db->get_charset());
$sql = 'SELECT * FROM `dateisystem` WHERE `parent`="'.mysqli_escape_string($db, "!§$&/()=?`").'"';
$result = $db->query($sql);
echo "Betroffene Reihen: " . $result->num_rows . "<br />";
while($row = $result->fetch_array(MYSQLI_ASSOC)) {
echo $row["name"] . "<br />";
}
$db->close();
?>
aus, so bekomme ich als Antwort "latin1" und "latin1_swedish_ci"
Selbst eine Lösung mittels .htaccess
- Code: Select all
<Files "charset.php">
AddCharset UTF-8 .php
</Files>
funktioniert nicht.
Die einzige Lösung ist
- Code: Select all
$db->set_charset("utf8");
in den jeweiligen php files..
Bug oder einfach nur etwas übersehen?