Heim Backend-Entwicklung PHP-Tutorial PHP-Zeichenkodierungskonvertierungsklasse, unterstützt die Konvertierung von ANSI, Unicode, Unicode Big Endian, UTF-8 und UTF-8 BOM ineinander

PHP-Zeichenkodierungskonvertierungsklasse, unterstützt die Konvertierung von ANSI, Unicode, Unicode Big Endian, UTF-8 und UTF-8 BOM ineinander

Aug 08, 2016 am 09:30 AM
charset str unicode

PHP-Zeichenkodierungskonvertierungsklasse, unterstützt ANSI, Unicode, Unicode Big Endian, UTF-8, UTF-8+Bom und gegenseitige Konvertierung.

Vier gängige Methoden zur Kodierung von Textdateien

ANSI-Kodierung:

Kein Datei-Header (das ikonische Byte am Anfang der Dateikodierung)

ANSI-kodierte alphanumerische Zeichen belegen ein Byte und chinesische Schriftzeichen zwei Bytes

Wagenrücklauf- und Zeilenvorschubzeichen, Einzelbyte, hexadezimale Darstellung ist 0d 0a

UNICODE-Kodierung:

Dateikopf, hexadezimale Darstellung ist FF FE

Jedes Zeichen ist mit zwei Bytes codiert

Wagenrücklauf- und Zeilenvorschubzeichen, Doppelbyte, hexadezimale Darstellung ist 000d 000a

Unicode-Big-Endian-Kodierung:

Die hexadezimale Darstellung des Dateiheaders ist FE FF

Die folgende Codierung setzt das hohe Bit des Zeichens vorne und das niedrige Bit hinten umgekehrt mit der Unicode-Kodierung

Wagenrücklauf- und Zeilenvorschubzeichen, Doppelbytes, hexadezimale Darstellung ist 0d00 0a00

UTF-8-Kodierung:

Dateikopf, hexadezimale Darstellung ist EF BB BF

UTF-8 ist eine Variable -Zeichenkodierung von Unicode. Zahlen, Buchstaben, Wagenrücklauf und Zeilenvorschub werden alle durch ein Byte dargestellt

Wagenrücklauf und Zeilenvorschub. Einzelbyte, hexadezimale Darstellung ist 0d 0a

Konvertierungsprinzip: Konvertieren Sie zuerst die Zeichenkodierung in UTF-8 und dann von UTF-8 in die entsprechende Zeichenkodierung.

CharsetConv.class.php

<?php
/** 字符编码转换类, ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom互相转换
*   Date:   2015-01-28
*   Author: fdipzone
*   Ver:    1.0
*
*   Func:
*   public  convert       转换
*   private convToUtf8    把编码转为UTF-8编码
*   private convFromUtf8  把UTF-8编码转换为输出编码
*/

class CharsetConv{ // class start

    private $_in_charset = null;   // 源编码
    private $_out_charset = null;  // 输出编码
    private $_allow_charset = array(&#39;utf-8&#39;, &#39;utf-8bom&#39;, &#39;ansi&#39;, &#39;unicode&#39;, &#39;unicodebe&#39;);


    /** 初始化
    * @param String $in_charset  源编码
    * @param String $out_charset 输出编码
    */
    public function __construct($in_charset, $out_charset){

        $in_charset = strtolower($in_charset);
        $out_charset = strtolower($out_charset);

        // 检查源编码
        if(in_array($in_charset, $this->_allow_charset)){
            $this->_in_charset = $in_charset;
        }

        // 检查输出编码
        if(in_array($out_charset, $this->_allow_charset)){
            $this->_out_charset = $out_charset;
        }

    }


    /** 转换
    * @param  String $str 要转换的字符串
    * @return String      转换后的字符串
    */
    public function convert($str){

        $str = $this->convToUtf8($str);   // 先转为utf8
        $str = $this->convFromUtf8($str); // 从utf8转为对应的编码

        return $str;
    }


    /** 把编码转为UTF-8编码
    * @param  String $str 
    * @return String
    */
    private function convToUtf8($str){

        if($this->_in_charset=='utf-8'){ // 编码已经是utf-8,不用转
            return $str;
        }

        switch($this->_in_charset){
            case 'utf-8bom':
                $str = substr($str, 3);
                break;

            case 'ansi':
                $str = iconv('GBK', 'UTF-8//IGNORE', $str);
                break;

            case 'unicode':
                $str = iconv('UTF-16le', 'UTF-8//IGNORE', substr($str, 2));
                break;

            case 'unicodebe':
                $str = iconv('UTF-16be', 'UTF-8//IGNORE', substr($str, 2));
                break;

            default:
                break;
        }

        return $str;

    }


    /** 把UTF-8编码转换为输出编码
    * @param  String $str
    * @return String
    */
    private function convFromUtf8($str){

        if($this->_out_charset=='utf-8'){ // 输出编码已经是utf-8,不用转
            return $str;
        }

        switch($this->_out_charset){
            case 'utf-8bom':
                $str = "\xef\xbb\xbf".$str;
                break;

            case 'ansi':
                $str = iconv('UTF-8', 'GBK//IGNORE', $str);
                break;

            case 'unicode':
                $str = "\xff\xfe".iconv('UTF-8', 'UTF-16le//IGNORE', $str);
                break;

            case 'unicodebe':
                $str = "\xfe\xff".iconv('UTF-8', 'UTF-16be//IGNORE', $str);
                break;

            default:
                break;
        }

        return $str;

    }


} // class end

?>
Nach dem Login kopieren

Demo: Unicode Big Endian zu UTF-8 +bom

<?php
require "CharsetConv.class.php";

$str = file_get_contents(&#39;source/unicodebe.txt&#39;);

$obj = new CharsetConv(&#39;unicodebe&#39;, &#39;utf-8bom&#39;);
$response = $obj->convert($str);

file_put_contents('response/utf-8bom.txt', $response, true);
?>
Nach dem Login kopieren

Quellcode-Download-Adresse: Zum Anzeigen klicken

Das Obige stellt die PHP-Zeichenkodierungskonvertierungsklasse vor, die die gegenseitige Konvertierung von ANSI, Unicode, Unicode Big Endian, UTF-8 und UTF-8 Bom unterstützt, einschließlich relevanter Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die an PHP-Tutorials interessiert sind .

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So konvertieren Sie Unicode in Chinesisch So konvertieren Sie Unicode in Chinesisch Dec 14, 2023 am 10:57 AM

Unicode ist ein Zeichenkodierungsstandard, der zur Darstellung verschiedener Sprachen und Symbole verwendet wird. Um die Unicode-Kodierung in chinesische Zeichen zu konvertieren, können Sie die in Python integrierten Funktionen chr() und ord() verwenden.

Vertiefendes Verständnis von PHP: Implementierungsmethode zur Konvertierung von JSON Unicode in Chinesisch Vertiefendes Verständnis von PHP: Implementierungsmethode zur Konvertierung von JSON Unicode in Chinesisch Mar 05, 2024 pm 02:48 PM

Vertiefendes Verständnis von PHP: Implementierungsmethode zum Konvertieren von JSONUnicode in Chinesisch Während der Entwicklung stoßen wir häufig auf Situationen, in denen wir JSON-Daten verarbeiten müssen, und die Unicode-Codierung in JSON verursacht in einigen Szenarien einige Probleme, insbesondere wenn Unicode konvertiert werden muss Bei der Kodierung wird in chinesische Zeichen konvertiert. In PHP gibt es einige Methoden, die uns bei der Umsetzung dieses Konvertierungsprozesses helfen können. Im Folgenden wird eine allgemeine Methode vorgestellt und es werden spezifische Codebeispiele bereitgestellt. Lassen Sie uns zunächst das Un in JSON verstehen

Probieren Sie die Methode aus, um das Problem der verstümmelten chinesischen Zeichen in Eclipse zu lösen Probieren Sie die Methode aus, um das Problem der verstümmelten chinesischen Zeichen in Eclipse zu lösen Jan 03, 2024 pm 05:28 PM

Haben Sie Probleme mit verstümmelten chinesischen Zeichen in Eclipse? Um diese Lösungen auszuprobieren, benötigen Sie konkrete Codebeispiele. 1. Einführung in den Hintergrund Mit der kontinuierlichen Weiterentwicklung der Computertechnologie spielt Chinesisch eine immer wichtigere Rolle in der Softwareentwicklung. Bei der Verwendung von Eclipse für die chinesische Entwicklung stoßen viele Entwickler jedoch auf Probleme mit verstümmeltem Code, was sich auf die Arbeitseffizienz auswirkt. Anschließend werden in diesem Artikel einige häufig auftretende Probleme mit verstümmeltem Code vorgestellt und entsprechende Lösungen und Codebeispiele bereitgestellt, um den Lesern bei der Lösung des chinesischen Problems mit verstümmeltem Code in Eclipse zu helfen. 2. Häufige Probleme mit verstümmeltem Code und Lösungsdateien

PHP-Tutorial: So konvertieren Sie JSON-Unicode in chinesische Zeichen PHP-Tutorial: So konvertieren Sie JSON-Unicode in chinesische Zeichen Mar 05, 2024 pm 06:36 PM

JSON (JavaScriptObjectNotation) ist ein leichtes Datenaustauschformat, das häufig für den Datenaustausch zwischen Webanwendungen verwendet wird. Bei der Verarbeitung von JSON-Daten stoßen wir häufig auf Unicode-codierte chinesische Zeichen (z. B. „u4e2du6587“) und müssen diese in lesbare chinesische Zeichen konvertieren. In PHP können wir diese Konvertierung durch einige einfache Methoden erreichen. Als Nächstes erfahren Sie, wie Sie JSONUnico konvertieren

Lösen Sie das Problem der inkonsistenten Unicode-Zeichensatzkodierung, wenn Java eine Verbindung zur MySQL-Datenbank herstellt Lösen Sie das Problem der inkonsistenten Unicode-Zeichensatzkodierung, wenn Java eine Verbindung zur MySQL-Datenbank herstellt Jun 10, 2023 am 11:39 AM

Mit der Entwicklung von Technologien wie Big Data und Cloud Computing sind Datenbanken zu einem wichtigen Eckpfeiler der Unternehmensinformatisierung geworden. Bei in Java entwickelten Anwendungen ist die Verbindung zur MySQL-Datenbank zur Norm geworden. Bei diesem Vorgang stoßen wir jedoch häufig auf ein heikles Problem: Die Codierung des Unicode-Zeichensatzes ist inkonsistent. Dies wirkt sich nicht nur auf unsere Entwicklungseffizienz aus, sondern auch auf die Leistung und Stabilität der Anwendung. In diesem Artikel erfahren Sie, wie Sie dieses Problem lösen und die Verbindung zwischen Java und der MySQL-Datenbank reibungsloser gestalten können. 1. Unicode

Was sind die Unterschiede zwischen Unicode und ASCII? Was sind die Unterschiede zwischen Unicode und ASCII? Sep 06, 2023 am 11:56 AM

Zu den Unterschieden zwischen Unicode und ASCII gehören unterschiedliche Codierungsbereiche, unterschiedliche Speicherplätze und unterschiedliche Kompatibilität. Detaillierte Einführung: 1. Der Codierungsbereich von ASCII ist unterschiedlich und wird hauptsächlich zur Darstellung englischer Buchstaben verwendet. Der Codierungsbereich von Unicode ist viel breiter und kann fast alle Sprachzeichen darstellen Leerzeichen sind unterschiedlich. ASCII verwendet normalerweise 1 Byte zum Speichern eines Zeichens, während Unicode möglicherweise 2 oder mehr Bytes zum Speichern eines Zeichens verwendet. Unterschiedliche Kompatibilität usw.

In Python integrierte Quellcodeanalyse vom Typ str In Python integrierte Quellcodeanalyse vom Typ str May 09, 2023 pm 02:16 PM

1Die Grundeinheit des Unicode-Computerspeichers ist das Byte, das aus 8 Bits besteht. Da Englisch nur aus 26 Buchstaben plus einer Reihe von Symbolen besteht, können englische Zeichen direkt in Bytes gespeichert werden. Andere Sprachen (wie Chinesisch, Japanisch, Koreanisch usw.) müssen jedoch aufgrund der großen Anzahl von Zeichen mehrere Bytes für die Codierung verwenden. Mit der Verbreitung der Computertechnologie entwickelt sich die Technologie zur Kodierung nicht-lateinischer Zeichen weiter, es gibt jedoch immer noch zwei wesentliche Einschränkungen: keine Unterstützung mehrerer Sprachen: Das Kodierungsschema einer Sprache kann nicht in einer anderen Sprache verwendet werden und es gibt keinen einheitlichen Standard: Beispielsweise gibt es auf Chinesisch viele Codierungsstandards wie GBK, GB2312, GB18030 usw. Da die Codierungsmethoden nicht einheitlich sind, müssen Entwickler zwischen verschiedenen Codierungen hin und her konvertieren, und es treten zwangsläufig viele Fehler auf.

Was sind die Gemeinsamkeiten und Unterschiede zwischen __str__ und __repr__ in Python? Was sind die Gemeinsamkeiten und Unterschiede zwischen __str__ und __repr__ in Python? Apr 29, 2023 pm 07:58 PM

Was sind die Gemeinsamkeiten und Unterschiede zwischen __str__ und __repr__? Wir alle wissen, dass die in Python integrierte Funktion repr() Objekte in Form von Zeichenfolgen ausdrücken kann, um unsere Identifizierung zu erleichtern. Dies ist die „String-Darstellung“. repr() erhält die String-Darstellung eines Objekts über die spezielle Methode __repr__. Wenn __repr__ nicht implementiert ist und wir eine Instanz eines Vektors auf der Konsole ausgeben, kann die resultierende Zeichenfolge sein. >>>classExample:pass>>>print(str(Example()))>>>

See all articles