


php 字符编码转换类,支持ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom 互相转换
php 字符编码转换类,支持ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom 互相转换。
四种常见文本文件编码方式
ANSI编码:
无文件头(文件编码开头标志性字节)
ANSI编码字母数字占一个字节,汉字占两个字节
回车换行符,单字节, 十六进制表示为0d 0a
UNICODE编码:
文件头,十六进制表示为FF FE
每一个字符都用两个字节编码
回车换行符, 双字节,十六进制表示为 000d 000a
Unicode big endian编码:
文件头十六进制表示为FE FF
后面编码是把字符的高位放在前面,低位放在后面,正好和Unicode编码颠倒
回车换行符,双字节,十六进制表示为0d00 0a00
UTF-8 编码:
文件头,十六进制表示为EF BB BF
UTF-8是Unicode的一种变长字符编码,数字、字母、回车、换行都用一个字节表示,汉字占3个字节
回车换行符,单字节,十六进制表示为0d 0a
转换原理:先把字符编码转为UTF-8,然后再从UTF-8转换为对应的字符编码。
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('utf-8', 'utf-8bom', 'ansi', 'unicode', 'unicodebe'); /** 初始化 * @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 ?>
demo:unicode big endian 转为 utf-8+bom
<?php require "CharsetConv.class.php"; $str = file_get_contents('source/unicodebe.txt'); $obj = new CharsetConv('unicodebe', 'utf-8bom'); $response = $obj->convert($str); file_put_contents('response/utf-8bom.txt', $response, true); ?>
源码下载地址:点击查看
以上就介绍了php 字符编码转换类,支持ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom 互相转换,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Unicode ialah standard pengekodan aksara yang digunakan untuk mewakili pelbagai bahasa dan simbol. Untuk menukar pengekodan Unicode kepada aksara Cina, anda boleh menggunakan fungsi terbina dalam Python chr() dan ord().

Pemahaman mendalam tentang PHP: Kaedah pelaksanaan menukar JSONUnicode kepada Bahasa Cina Semasa pembangunan, kami sering menghadapi situasi di mana kami perlu memproses data JSON dan pengekodan Unicode dalam JSON akan menyebabkan kami beberapa masalah dalam beberapa senario, terutamanya apabila kami perlu menukar Unicode Apabila pengekodan ditukar kepada aksara Cina. Dalam PHP, terdapat beberapa kaedah yang boleh membantu kami mencapai proses penukaran ini Kaedah biasa akan diperkenalkan di bawah dan contoh kod khusus akan disediakan. Mula-mula, mari kita fahami dulu Un dalam JSON

Adakah anda terganggu dengan watak Cina yang kacau dalam Eclipse? Untuk mencuba penyelesaian ini, anda memerlukan contoh kod khusus 1. Pengenalan latar belakang Dengan perkembangan berterusan teknologi komputer, bahasa Cina memainkan peranan yang semakin penting dalam pembangunan perisian. Walau bagaimanapun, banyak pembangun menghadapi masalah kod bercelaru apabila menggunakan Eclipse untuk pembangunan bahasa Cina, yang menjejaskan kecekapan kerja. Kemudian, artikel ini akan memperkenalkan beberapa masalah kod bercelaru biasa dan memberikan penyelesaian serta contoh kod yang sepadan untuk membantu pembaca menyelesaikan masalah kod bercelaru bahasa Cina dalam Eclipse. 2. Masalah kod bercelaru biasa dan fail penyelesaian

JSON (JavaScriptObjectNotation) ialah format pertukaran data ringan yang biasa digunakan untuk pertukaran data antara aplikasi web. Semasa memproses data JSON, kami sering menemui aksara Cina yang dikodkan Unikod (seperti "u4e2du6587") dan perlu menukarnya kepada aksara Cina yang boleh dibaca. Dalam PHP, kita boleh mencapai penukaran ini melalui beberapa kaedah mudah. Seterusnya, kami akan memperincikan cara menukar JSONUnico

Dengan perkembangan teknologi seperti data besar dan pengkomputeran awan, pangkalan data telah menjadi salah satu asas penting dalam pemformatan perusahaan. Dalam aplikasi yang dibangunkan di Java, menyambung ke pangkalan data MySQL telah menjadi kebiasaan. Walau bagaimanapun, dalam proses ini, kita sering menghadapi masalah berduri - pengekodan set aksara unikod tidak konsisten. Ini bukan sahaja akan menjejaskan kecekapan pembangunan kami, tetapi juga menjejaskan prestasi dan kestabilan aplikasi. Artikel ini akan memperkenalkan cara menyelesaikan masalah ini dan menjadikan Java menyambung ke pangkalan data MySQL dengan lebih lancar. 1. Unicode

Perbezaan antara unicode dan ascii termasuk julat pengekodan yang berbeza, ruang storan yang berbeza dan keserasian yang berbeza. Pengenalan terperinci: 1. Julat pengekodan adalah berbeza Julat pengekodan ASCII ialah 0-127, yang digunakan terutamanya untuk mewakili huruf Inggeris Julat pengekodan Unicode adalah lebih luas dan boleh mewakili hampir semua aksara bahasa ruang berbeza ASCII biasanya Gunakan 1 bait untuk menyimpan aksara, manakala unicode mungkin menggunakan 2 atau lebih bait untuk menyimpan aksara 3. Keserasian yang berbeza, dsb.

1Unit asas storan komputer Unicode ialah bait, yang terdiri daripada 8 bit. Memandangkan bahasa Inggeris hanya terdiri daripada 26 huruf ditambah beberapa simbol, aksara Inggeris boleh disimpan terus dalam bait. Tetapi bahasa lain (seperti Cina, Jepun, Korea, dll.) perlu menggunakan berbilang bait untuk pengekodan kerana bilangan aksara yang banyak. Dengan penyebaran teknologi komputer, teknologi pengekodan aksara bukan Latin terus berkembang, tetapi masih terdapat dua batasan utama: tiada sokongan berbilang bahasa: skema pengekodan satu bahasa tidak boleh digunakan dalam bahasa lain dan tiada standard bersatu: contohnya Terdapat banyak piawaian pengekodan dalam bahasa Cina seperti GBK, GB2312, GB18030, dsb. Memandangkan kaedah pengekodan tidak bersatu, pembangun perlu menukar berulang-alik antara pengekodan yang berbeza, dan banyak ralat pasti akan berlaku.

Apakah persamaan dan perbezaan antara __str__ dan __repr__? Kita semua tahu perwakilan rentetan fungsi repr() boleh menyatakan objek dalam bentuk rentetan untuk memudahkan pengenalan kita. Ini ialah "perwakilan rentetan". repr() mendapatkan perwakilan rentetan objek melalui kaedah khas __repr__. Jika __repr__ tidak dilaksanakan, apabila kita mencetak contoh vektor ke konsol, rentetan yang terhasil mungkin. >>>classContoh:lulus>>>cetak(str(Contoh()))>>>
