MySQL und PHP: UTF-8 mit kyrillischen Zeichen
Ich versuche, legen Sie die kyrillische Wert in der MySQL-Tabelle, aber es gibt ein problem mit der Codierung.
Php:
<?php
$servername = "localhost";
$username = "a";
$password = "b";
$dbname = "c";
$conn = new mysqli($servername, $username, $password, $dbname);
mysql_query("SET NAMES 'utf8';");
mysql_query("SET CHARACTER SET 'utf8';");
mysql_query("SET SESSION collation_connection = 'utf8_general_ci';");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "UPDATE `c`.`mainp` SET `search` = 'test тест' WHERE `mainp`.`id` =1;";
if ($conn->query($sql) === TRUE) {
}
$conn->close();
?>
MySQL:
| id | search |
| 1 | test ав |
Hinweis: die PHP-Datei ist utf-8
-, Datenbank-Sortierung utf8_general_ci
Sie müssen aufhören, mit
Sollte das Update für Sie als gut stackoverflow.com/questions/25286279/...
mysql_query()
-- PHP mysql_xxx()
Funktionen ersetzt wurden: Sie sollten entweder die mysqli
oder PDO
Bibliotheken statt. Beiden sollte machen diese Art der Sache einfacher, mit zu arbeiten.Sollte das Update für Sie als gut stackoverflow.com/questions/25286279/...
InformationsquelleAutor Arriba | 2015-08-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre aktuelle Ausgabe ist ein charset-problem irgendwo. Hier sind ein paar Tipps, die Ihnen helfen können, erhalten Sie den richtigen Zeichensatz für Ihre Anwendung. Dies deckt die meisten von den Allgemeinen Problemen kann man begegnen, wenn die Entwicklung einer PHP/MySQL Applikation.
Format
->Convert to UTF-8 w/o BOM
)Den header in PHP-und HTML sollte auf UTF-8 eingestellt
HTML (innen
<head></head>
tags):PHP (am Anfang der Datei, vor jeglicher Ausgabe):
Nach dem verbinden mit der Datenbank, setzen Sie das charset auf UTF-8 für connection-Objekt, wie folgt (direkt nach dem anschließen)
Dies ist für
mysqli_*
, es gibt ähnliche fürmysql_*
und PDO (zu finden am Ende dieser Antwort).Auch sicherstellen, dass Ihre Datenbank und die Tabellen sind auf UTF-8 eingestellt, die Sie tun können, wie diese:
(Alle Daten die bereits gespeichert sind, werden nicht konvertiert, um die richtige charset, so müssen Sie dies mit einer sauberen Datenbank, oder aktualisieren Sie die Daten, nachdem dies zu tun, wenn es gebrochen Zeichen).
json_encode()
müssen Sie möglicherweise gelten dieJSON_UNESCAPED_UNICODE
Flagge, sonst wird es zu konvertieren, Sonderzeichen in Ihre hexadezimale Entsprechung.Denken Sie daran, dass ALLES in Ihrem gesamten pipeline-der code muss so eingestellt werden, UFT-8, sonst erleben Sie möglicherweise gebrochenen Charaktere in Ihrer Anwendung.
Zusätzlich zu dieser Liste, kann es Funktionen, die eine spezifische parameter zur Angabe eines Zeichensatzes. Das Handbuch wird Ihnen sagen, über das (ein Beispiel ist
htmlspecialchars()
).Gibt es auch spezielle Funktionen für Mehrbyte-Zeichen, Beispiel:
strtolower()
nicht niedriger multibyte-Zeichen, für die, die Sie verwenden müssenmb_strtolower()
finden Sie in diesem live demo.Einstellung UTF-8 mit
mysql_
- und PDO -PDO: Dies geschieht in der DSN von Ihrem Objekt. Hinweis: die
charset
Attribut,mysql_
: Dies ist sehr ähnlich zumysqli_*
, aber es funktioniert nicht das connection-Objekt als erstes argument.Charset können nun mit
<meta charset="UTF-8">
als auch in der HTMLInformationsquelleAutor Qirel
Lösung:
mysql_query("SET NAMES 'utf8';");
>$mysqli->set_charset('utf8');
InformationsquelleAutor Arriba