In PHP können Saiten in verschiedenen Charakter -Codierungsformaten vorliegen. Die beiden häufigsten sind ISO-8859-1 (auch Latin1 genannt) und UTF-8. ISO-8859-1 ist eine Single-Byte-Codierung, die hauptsächlich in westeuropäischen Sprachen verwendet wird, während UTF-8 eine Multi-Byte-Kodierung ist, die fast alle Zeichen darstellen kann.
Wenn Sie Daten aus einer externen Datenquelle (z. B. eine Datenbank, API oder Datei) lesen, ist es möglich, dass das Codierungsformat dieser Daten mit dem vom Programm intern verwendeten Codierungsformat nicht übereinstimmt. Zu diesem Zeitpunkt müssen Sie die Codierung konvertieren, um eine normale Anzeige und Verarbeitung zu gewährleisten.
Die Funktion utf8_encode () wandelt einen iSO-8859-1 codierten String in UTF-8 codiert um. Wenn Ihre Datenquelle die ISO-8859-1-Codierung verwendet und die von PHP intern verarbeitete Zeichenfolge die UTF-8-Codierung ist, müssen Sie diese durch diese Funktion konvertieren.
<span><span><span class="hljs-variable">$isoString</span></span><span> = </span><span><span class="hljs-string">"Café"</span></span><span>; </span><span><span class="hljs-comment">// Angenommen, diese Zeichenfolge ist ISO-8859-1 Codierung</span></span><span>
</span><span><span class="hljs-variable">$utf8String</span></span><span> = </span><span><span class="hljs-title function_ invoke__">utf8_encode</span></span><span>(</span><span><span class="hljs-variable">$isoString</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$utf8String</span></span><span>; </span><span><span class="hljs-comment">// Ausgabe:Café</span></span><span>
</span></span>
Um festzustellen, ob utf8_encode () erforderlich ist, müssen wir die folgenden Bedingungen bestätigen:
Datenquellen-Codierungsformat : Wenn Ihre Daten ISO-8859-1 Codierung (oder eine andere Nicht-UTF-8-Codierung) sind und Sie in UTF-8 verarbeiten oder ausgeben müssen, müssen Sie utf8_encode () zur Konvertierung verwenden.
Standardcharakter für die aktuelle Umgebung : Die meisten modernen PHP-Umgebungen verwenden UTF-8 bereits als Standardzeichen. Wenn Ihre Anwendungsumgebung bereits eine UTF-8-Codierung ist, müssen die von außen gelesenen Daten entsprechend der tatsächlichen Codierung konvertiert werden, ansonsten werden verstümmelter Code stattfinden.
Codierung wird vom Browser oder Terminal angezeigt : Wenn Ihre Anwendung Daten in den Browser ausgibt, erwarten Browser normalerweise die UTF-8-Codierung. Es können Probleme auftreten, wenn die Datencodierung nicht mit dem vom Browser erwarteten Zeichen gesetzt wird. Zu diesem Zeitpunkt können Sie utf8_encode () verwenden, um die Daten in den richtigen Zeichensatz zu konvertieren.
Angenommen, Sie lesen ein Feld aus einer Datenbank, sein Codierungsformat lautet ISO-8859-1, und dann müssen Sie dieses Feld auf der Webseite anzeigen. Um verstümmelten Code zu vermeiden, müssen Sie normalerweise utf8_encode () zur Konvertierung verwenden.
<span><span><span class="hljs-comment">// Lesen Sie aus der Datenbank ISO-8859-1 Codierung数据</span></span><span>
</span><span><span class="hljs-variable">$dbString</span></span><span> = </span><span><span class="hljs-string">"El Ni?o"</span></span><span>; </span><span><span class="hljs-comment">// Angenommen, die aus der Datenbank gelesene Zeichenfolge lautet ISO-8859-1 Codierung</span></span><span>
</span><span><span class="hljs-comment">// Konvertieren zu UTF-8 Codierung</span></span><span>
</span><span><span class="hljs-variable">$utf8String</span></span><span> = </span><span><span class="hljs-title function_ invoke__">utf8_encode</span></span><span>(</span><span><span class="hljs-variable">$dbString</span></span><span>);
</span><span><span class="hljs-comment">// Ausgabe到浏览器</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$utf8String</span></span><span>; </span><span><span class="hljs-comment">// Ausgabe:El Ni?o</span></span><span>
</span></span>
Wenn Sie bestätigen, dass die Daten bereits UTF-8 codiert sind, müssen Sie nicht UTF8_Encode () aufrufen, ansonsten können unnötige Konvertierungsprobleme verursacht werden.
In einigen Fällen sind Sie möglicherweise nicht sicher, ob das Codierungsformat der Stringformat. Zu diesem Zeitpunkt können Sie die Funktion MB_DETECT_ENCODING () verwenden, um die Codierung der Zeichenfolge zu erkennen und zu entscheiden, ob die Konvertierung erforderlich ist.
<span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"El Ni?o"</span></span><span>; </span><span><span class="hljs-comment">// 假设这个字符串的Codierung未知</span></span><span>
</span><span><span class="hljs-comment">// 检测字符串的Codierung</span></span><span>
</span><span><span class="hljs-variable">$encoding</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_detect_encoding</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-string">"ISO-8859-1, UTF-8"</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$encoding</span></span><span> == </span><span><span class="hljs-string">"ISO-8859-1"</span></span><span>) {
</span><span><span class="hljs-comment">// im Fall von ISO-8859-1 Codierung,则Konvertieren zu UTF-8</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">utf8_encode</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>);
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>; </span><span><span class="hljs-comment">// Ausgabe转换后的字符串</span></span><span>
</span></span>
Versuchen Sie nach Möglichkeit, die UTF-8-Codierung während der Anwendungsentwicklung zu verwenden. UTF-8 unterstützt fast alle Sprachcharaktere auf der ganzen Welt und vermeidet den Ärger der inkonsistenten Codierung. Wenn Sie die MySQL-Datenbank verwenden, wird empfohlen, den Zeichensatz der Datenbank und Tabellen auf UTF-8 festzulegen.
<span><span><span class="hljs-keyword">CREATE</span></span><span> DATABASE my_database </span><span><span class="hljs-type">CHARACTER</span></span><span> </span><span><span class="hljs-keyword">SET</span></span><span> utf8mb4 </span><span><span class="hljs-keyword">COLLATE</span></span><span> utf8mb4_unicode_ci;
</span></span>
Auf diese Weise können Sie den Ärger der Nachbearbeitungskodierkonvertierungen verringern.