convert_cyr_string ist eine Funktion von PHP, die Zeichenfolgen zwischen mehreren kyrillischen Buchstabencodierungen (wie KOI8-R, Windows-1251, ISO-8859-5 usw.) konvertiert. Der Funktionsprototyp lautet wie folgt:
string convert_cyr_string(string $str, string $from, string $to);
$ str : Die zu konvertierende Zeichenfolge
$ von : Der Codierungstyp der aktuellen Zeichenfolge
$ TO : Zielcodierungstyp
Zu den unterstützten Codierungskennungen gehören:
K -KOI8-R
W -Windows-1251
I -ISO-8859-5
A - CP866
Wenn die Zeichensatzeinstellungen der Datenbank nicht einheitlich sind oder wenn PHP beim Lesen und Schreiben nicht angepasst ist, werden die gespeicherten Daten nicht mit den tatsächlichen angezeigten Daten nicht stimmen, was zu Problemen mit verstümmelter Code führt. Zum Beispiel:
Die Datenbank wird von UTF8 codiert, aber die Anwendung verwendet Windows-1251 beim Schreiben, und der verstümmelte Code wird angezeigt.
Die Anwendung konvertierte die Codierung beim Lesen der Datenbank nicht, wodurch die Daten abnormal angezeigt wurden.
Die Gewährleistung einer konsistenten Codierung ist der Schlüssel zur Vermeidung verstümmelter Code.
Unter der Annahme, dass die von Ihnen verwendete Datenbank kyrillische Zeichendaten in der Windows-1251-Codierung speichert und PHP-Skripte standardmäßig die Zeichenfolgen in der UTF-8-Codierung verarbeiten, können Sie konvert_cyr_string verwenden, um die Konvertierung zu codieren, um sicherzustellen, dass die Daten korrekt formatiert werden, wenn sie geschrieben und gelesen werden.
<?php
// Original UTF-8 Saite
$utf8_string = "Пример строки на русском";
// Wille UTF-8 Konvertieren zu Windows-1251,Bereiten Sie sich darauf vor, in die Datenbank zu schreiben
// Zuerst verwenden iconv Konvertieren UTF-8 ankommen Windows-1251,Nutze wieder benutzen convert_cyr_string Passen Sie die Codierung an
$win1251_string = convert_cyr_string(iconv("UTF-8", "Windows-1251//IGNORE", $utf8_string), 'w', 'w');
// Datenbank -Schreiboperation
// Angenommen, es wurde etabliert PDO verbinden $pdo
$sql = "INSERT INTO example_table (text_column) VALUES (:text)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':text', $win1251_string);
$stmt->execute();
?>
<?php
// aus数据库读取Saite,Nehmen Sie das an Windows-1251 Codierung
$sql = "SELECT text_column FROM example_table WHERE id = 1";
$stmt = $pdo->query($sql);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
// verwenden convert_cyr_string Konvertieren为 UTF-8,Praktisches Front-End-Display
$win1251_string = $row['text_column'];
$utf8_string = iconv("Windows-1251", "UTF-8//IGNORE", convert_cyr_string($win1251_string, 'w', 'w'));
echo $utf8_string;
?>
Datenbank Zeichen feststellen <br> Verwenden Sie SQL -Anweisungen, um die Zeichensatzkonfiguration der Datenbank und Tabellen zu bestätigen und stellen Sie sicher, dass sie mit der Standardcodierung des PHP -Skripts übereinstimmt.
Einheitliches Codierungs- und Konvertierungswerkzeug <br> Obwohl sich Convert_Cyr_String auf die kyrillische Codierungskonvertierung konzentriert, ist ICONV oder MB_CONVERT_ENCODING für allgemeine UTF-8 und andere Codierungskonvertierungen allgemeiner.
Ordnen Sie die Konversionsverordnung vernünftig an <br> Für die komplexe Codierungskonvertierung wird empfohlen, ICONV oder MB_CONVERT_ENCODING als Hauptkonvertierung zuerst zu verwenden und dann Convert_Cyr_String zur Feinabstimmung zu verwenden.
Verarbeitungskonvertierung fehlgeschlagen <br> Verwenden Sie bei Verwendung der Konvertierung das ignorante Ungültige Zeichenflag (z. B. "// ignorieren" ), um den Programmfehler zu vermeiden.
Geben Sie den Zeichensatz an, wenn Sie eine Verbindung zur Datenbank herstellen <br> Für MySQL wird empfohlen, Charakter -Set -Parameter bei der Verbindung aufzunehmen, z .
convert_cyr_string ist ein einfaches und effektives Werkzeug, wenn es sich um spezifische kyrillische Codierungskonvertierungen handelt. Ein größerer Bereich von Coding Conversion -Aufgaben ist jedoch besser geeignet, um sich auf ICONV- und Mbstring -Erweiterungen zu verlassen. Nur durch die vernünftige Kombination dieser Tools und das Einstellen des Datenbankzeichensatzes können wir grundlegend sicherstellen, dass die Codierung während des Lesens und Schreibens der Datenbank konsistent ist, verstümmelten Code verhindern und die Systemstabilität verbessern.
Halten Sie die Codierung konsistent, die Daten sind natürlich klar und korrekt und die Benutzererfahrung wird entsprechend verbessert.
<?php
// Beispiel:ausUTF-8KonvertierenankommenWindows-1251Schreiben Sie in die Datenbank,再读取Konvertieren回UTF-8
function saveStringToDb(PDO $pdo, string $utf8_string) {
// Transcodierung:UTF-8 -> Windows-1251
$win1251_string = iconv("UTF-8", "Windows-1251//IGNORE", $utf8_string);
$win1251_string = convert_cyr_string($win1251_string, 'w', 'w');
$sql = "INSERT INTO example_table (text_column) VALUES (:text)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':text', $win1251_string);
$stmt->execute();
}
function getStringFromDb(PDO $pdo, int $id): string {
$sql = "SELECT text_column FROM example_table WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$row) {
return '';
}
$win1251_string = $row['text_column'];
// Transcodierung:Windows-1251 -> UTF-8
$utf8_string = iconv("Windows-1251", "UTF-8//IGNORE", convert_cyr_string($win1251_string, 'w', 'w'));
return $utf8_string;
}
?>