Dengan perkembangan Internet, semakin banyak laman web dan aplikasi telah mula melibatkan isu merentas bahasa. Sebagai bahasa istimewa, bahasa Cina agak sukar untuk dikod dan ditukar. Dalam bahasa PHP, banyak fungsi penukaran bahasa Cina disediakan Artikel ini akan memperkenalkan fungsi ini secara terperinci.
1. Pengekodan bahasa Cina
fungsi urlencode() boleh mengekod aksara Cina dan menukarnya ke dalam bentuk %XX, di mana XX ialah perwakilan heksadesimal bagi aksara dalam set aksara. Sebagai contoh, perkataan "Bahasa Cina" akan ditukar kepada "%E4%B8%AD%E6%96%87" selepas menggunakan fungsi urlencode().
Contoh:
$str = "中文"; echo urlencode($str); // 输出 %E4%B8%AD%E6%96%87
Fungsi rawurlencode() pada dasarnya mempunyai fungsi yang sama dengan fungsi urlencode(), perbezaannya ialah Fungsi rawurlencode() tidak mengekod ruang, tetapi menukarnya kepada tanda "+".
Contoh:
$str = "中文 test"; echo rawurlencode($str); // 输出 %E4%B8%AD%E6%96%87+test
Fungsi urldecode() boleh digunakan untuk mengekod rentetan menggunakan fungsi urlencode() . Nyahkod dan tukar aksara dalam bentuk %XX kepada aksara Cina yang sepadan.
Contoh:
$str = "%E4%B8%AD%E6%96%87"; echo urldecode($str); // 输出 中文
fungsi rawurldecode() mempunyai fungsi yang sama seperti fungsi urldecode(), perbezaannya ialah fungsi rawurldecode( ) akan menukar tanda "+" menjadi ruang.
Contoh:
$str = "%E4%B8%AD%E6%96%87+test"; echo rawurldecode($str); // 输出 中文 test
2 penukaran bahasa Cina
fungsi iconv() boleh melengkapkan fungsi yang berbeza. Penukaran antara pengekodan, termasuk format pengekodan yang biasa digunakan seperti utf-8, gbk, big5, dsb. Format sintaks ialah:
iconv($in_charset, $out_charset, $string);
di mana $in_charset mewakili format pengekodan rentetan input, $out_charset mewakili format pengekodan rentetan output dan $string mewakili rentetan yang hendak ditukar.
Contohnya, tukar rentetan berkod utf-8 kepada rentetan berkod gbk:
$str = "中文"; $str = iconv("utf-8", "gbk", $str); echo $str; // 输出乱码,应该在gbk编码的环境下查看
Nota: aksara bercelaru mungkin muncul selepas fungsi iconv() ditukar kepada Surat-menyurat antara aksara tertentu dalam dua pengekodan mungkin tidak wujud dan oleh itu tidak boleh ditukar dengan betul. Penyelesaian kepada masalah ini boleh menggunakan kaedah penukaran Unicode.
fungsi mb_convert_encoding() juga boleh melengkapkan penukaran antara pengekodan yang berbeza Perbezaan daripada fungsi iconv() ialah penggunaannya lebih fleksibel dan boleh Tentukan lebih banyak pilihan penukaran. Format sintaks ialah:
mb_convert_encoding($string, $to_encoding, $from_encoding);
di mana $string mewakili rentetan yang hendak ditukar, $to_encoding mewakili format pengekodan yang ditukar dan $from_encoding mewakili format pengekodan rentetan asal.
Sebagai contoh, tukar rentetan berkod utf-8 kepada rentetan berkod gbk:
$str = "中文"; $str = mb_convert_encoding($str, "gbk", "utf-8"); echo $str; // 输出乱码,应该在gbk编码的环境下查看
Fungsi utf8_encode() boleh menukar rentetan berkod ISO-8859-1 kepada rentetan berkod utf-8 dan fungsi utf8_decode() boleh menukar rentetan berkod utf-8 kepada rentetan Berkod ISO-8859-1.
Contohnya, tukar rentetan berkod ISO-8859-1 kepada rentetan berkod utf-8:
$str = "中文"; $str = utf8_encode($str); echo $str; // 输出ä¸æ–‡
Nota: aksara bercelaru mungkin muncul selepas fungsi utf8_encode() ditukar. Harus digunakan dengan berhati-hati.
fungsi chr() boleh menukar nilai kod ASCII yang diberikan kepada aksara yang sepadan, dan fungsi ord() Kemudian anda boleh menukar aksara yang diberikan kepada nilai kod ASCII yang sepadan. Khususnya, dalam pengekodan UTF-8, setiap aksara boleh terdiri daripada 1 hingga 4 bait. Untuk pengekodan UTF-8 bagi aksara tertentu, anda boleh mendapatkan nilai perpuluhannya melalui fungsi ord(), dan kemudian gunakan fungsi chr() untuk menukarnya menjadi aksara.
Contohnya, tukar aksara "中" kepada pengekodan UTF-8nya:
$ord1 = ord("中"); // 取得字符"中"的UTF-8编码的第一个字节的值 $ord2 = ord(substr("中", 1)); // 取得字符"中"的UTF-8编码的第二个字节的值 $str = chr(0xe4) . chr(0xb8) . chr(0xad); // 使用chr()函数转换为UTF-8编码的字符串 echo $str; // 输出 "中"
Nota: Apabila menggunakan fungsi chr() dan fungsi ord(), berhati-hati pertimbangkan aksara berbeza menetapkan perbezaan pengekodan.
3. Pertimbangan panjang bahasa Cina
fungsi strlen() digunakan untuk mengira panjang rentetan, termasuk bahasa Cina dan Inggeris watak. Walau bagaimanapun, oleh kerana aksara Cina menduduki bilangan bait yang berbeza dalam pengekodan yang berbeza, bilangan aksara Cina tidak boleh dikira dengan tepat semasa mengira panjang rentetan bahasa Cina. Sebagai contoh, gunakan fungsi strlen() untuk mengira panjang "Bahasa Cina", dan hasilnya ialah 6.
Contoh:
$str = "中文"; echo strlen($str); // 输出 6
fungsi mb_strlen() boleh mengira dengan tepat panjang rentetan dan aksara Cina bagi pengekodan yang berbeza Rentetan boleh dikira.
Contoh:
$str = "中文"; echo mb_strlen($str); // 输出 2
Nota: Apabila menggunakan fungsi mb_strlen(), anda mesti menentukan set aksara Cina yang betul. Jika anda tidak mengetahui set aksara, anda boleh menggunakan fungsi mb_detect_encoding() untuk mengesannya.
Atas ialah kandungan terperinci Penjelasan terperinci tentang fungsi penukaran bahasa Cina PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!