Aktueller Standort: Startseite> Neueste Artikel> Wie Verwenden Sie MySQLI :: Zeichen_Set_Name, um zu bestätigen, ob der Datenbankzeichensatz mit dem Anwendungszeichen entspricht?

Wie Verwenden Sie MySQLI :: Zeichen_Set_Name, um zu bestätigen, ob der Datenbankzeichensatz mit dem Anwendungszeichen entspricht?

gitbox 2025-07-09
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Das Beispiel in diesem Artikel ist PHP verwenden mysqli::character_set_name Überprüfen Sie die Datenbankverbindung Zeichenzeichensatz</span></span><span>
</span><span><span class="hljs-comment">// Bitte stellen Sie sicher, dass Sie die Datenbankverbindungsparameter korrekt konfiguriert haben</span></span><span>

</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Verbindung ist fehlgeschlagen: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// Stellen Sie den erwarteten Zeichensatz ein</span></span><span>
</span><span><span class="hljs-variable">$expectedCharset</span></span><span> = </span><span><span class="hljs-string">'utf8mb4'</span></span><span>;
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">set_charset</span></span><span>(</span><span><span class="hljs-variable">$expectedCharset</span></span><span>);

</span><span><span class="hljs-comment">// 获取当前连接verwenden的字符集</span></span><span>
</span><span><span class="hljs-variable">$currentCharset</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>();

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Aktueller Zeichensatz: <span class="hljs-subst">$currentCharset</span></span></span><span>\n";

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$currentCharset</span></span><span> === </span><span><span class="hljs-variable">$expectedCharset</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Charakter -Set -Matching,Anwendungen können Daten sicher bedienen。\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Charakter -Set -Fehlanpassung,Momentan <span class="hljs-subst">$currentCharset</span></span></span><span>,Sollte sein </span><span><span class="hljs-subst">$expectedCharset</span></span><span>,Bitte überprüfen Sie die Einstellungen。\n";
}

</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>

------------------------------------------------------------

</span><span><span class="hljs-comment"># 如何verwenden mysqli::character_set_name 确认数据库字符集Ja否与应用Charakter -Set -Matching?</span></span><span>

In der Entwicklung PHP Bei der Bewerbung,Charakter -Set -Probleme sind eines der häufigsten Probleme, die das richtige Lesen, Schreiben und die Anzeige von Daten beeinflussen.。Besonders wenn es um mehrsprachige Inhalte geht,Inkonsistente Zeichensätze können zu verstümmelter Code führen、Datenverlust und sogar Sicherheitsrisiken。daher,In mit MySQL Nachdem die Datenbankverbindung hergestellt wurde,确认当前verwenden的字符集Ja否与应用期望的一致,Es ist ein sehr wichtiger Schritt。

</span><span><span class="hljs-comment">## Was ist `mysqli::character_set_name`?</span></span><span>

`mysqli::</span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>()` Ja PHP `mysqli` Eine Methode in der Klasse,它返回当前数据库连接所verwenden的字符集名称。Nach dieser Methode,我们可以方便地确认当前连接实际verwenden的字符集,Vermeiden Sie Probleme mit Misskonfiguration。

</span><span><span class="hljs-comment">## verwenden方法</span></span><span>

Sie können diese Methode aufrufen, nachdem Sie eine Datenbankverbindung erfolgreich erstellt haben。以下Ja一个基础的verwenden示例:

```php
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Verbindung ist fehlgeschlagen: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-variable">$charset</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"当前verwenden的字符集Ja: <span class="hljs-subst">$charset</span></span></span><span>";
</span></span>

Standardmäßig verwendet MySQLI das Latin1 -Zeichensatz, das oft nicht den Anforderungen moderner Anwendungen (insbesondere Chinesen) entspricht. Daher müssen wir normalerweise den Zeichensatz manuell einstellen, z. B. UTF8MB4 .

 <span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">set_charset</span></span><span>(</span><span><span class="hljs-string">"utf8mb4"</span></span><span>);
</span></span>

Call charakter_set_name () nach der Einstellung zu bestätigen, ob die Einstellungen effektiv sind.

Überprüfen Sie, ob der Zeichensatz übereinstimmt

In praktischen Anwendungen wird empfohlen, ein Stück logischer Code zu schreiben, um die automatische Erkennung von Zeichensatz -Matching:

 <span><span><span class="hljs-variable">$expectedCharset</span></span><span> = </span><span><span class="hljs-string">'utf8mb4'</span></span><span>;
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">set_charset</span></span><span>(</span><span><span class="hljs-variable">$expectedCharset</span></span><span>);

</span><span><span class="hljs-variable">$currentCharset</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>();

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$currentCharset</span></span><span> !== </span><span><span class="hljs-variable">$expectedCharset</span></span><span>) {
    </span><span><span class="hljs-comment">// Melden Sie einen Fehler an oder geben Sie eine Warnung aus</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Charakter -Set -Fehlanpassung: Momentan <span class="hljs-subst">$currentCharset</span></span></span><span>,Sollte sein </span><span><span class="hljs-subst">$expectedCharset</span></span><span>");
}
</span></span>

Warum UTF8MB4 wählen?

Obwohl MySQL UTF8 liefert, unterstützt es nicht das vollständige UTF-8-Zeichensatz (höchstens Drei-Byte-Codierung), während UTF8MB4 die vollständige UTF-8 unterstützt, einschließlich vier Byte-Zeichen wie Emojis. Daher wird empfohlen, UTF8MB4 in modernen Webanwendungen zu verwenden.

Zusammenfassen

Die Verwendung von MySQLI :: Zeichen_Set_Name () ist eine einfache und effiziente Möglichkeit, den tatsächlichen Zeichensatz einer Datenbankverbindung zu bestätigen. Überprüfen Sie unmittelbar nach dem Festlegen des Zeichens, um Probleme zu vermeiden, die durch inkonsistente Codierung verursacht werden. Zusammenarbeit mit IT sind Datenbanktabellenstrukturdefinitionen, HTTP -Encoder usw., die konsistent auf denselben Zeichen gesetzt werden müssen, um den richtigen Speicher und die Anzeige von Daten zu gewährleisten.

 <span></span>