php tidak menyokong unicode, yang bermaksud bahawa rentetan PHP tidak menyimpan maklumat pengekodan aksara, jadi fungsi operasi asli tidak mengetahui cara data binari sepadan dengan teks, dan hanya boleh menganggap bahawa satu aksara sepadan dengan bait tunggal; dengan cara ini, apabila memproses Ia mencukupi untuk kod Bahasa Inggeris dan ASCII lain, tetapi untuk aksara berbilang bait seperti bahasa Cina, ralat akan berlaku.
Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3
Apakah maksudnya php tidak menyokong unicode? Mengapakah ia mengatakan bahawa PHP tidak menyokong pengekodan Unicode?
Selalunya dikatakan PHP tidak menyokong Unicode, atau PHP tidak menyokong Unicode di peringkat bawah. Walaupun saya tahu bahawa pengekodan PHP sangat menyakitkan dan pelbagai fungsi pemprosesan rentetan adalah sangat tidak standard, ia masih boleh memaparkan bahasa Cina. Saya tidak pernah memahami maksud ia tidak menyokong Unicode. Menghabiskan sedikit masa menyusun maklumat ini.
Mari kita mulakan dengan contoh:
Skrip PHP adalah seperti berikut di atas, Nampaknya satu aksara Cina dianggap sebagai 3 aksara. Ini bermula dengan penyimpanan rentetan PHP.
//文件编码UTF-8 echo strlen("中文"); // 6 echo substr("中文",0,1) // 乱码 echo substr("中文",0,3) // 中
Begitu juga, jika anda menukar pengekodan fail kepada GBK atau lain-lain, anda akan dapat percubaan sekali lagi Keputusan yang sama diperolehi, kecuali setiap aksara Cina dalam GBK menduduki 2 bait.
//文件编码UTF-8 echo bin2hex("中文"); // 可以看到,"中文"对应的二进制就是:e4b8ade69687 echo strlen("中文"); // 所以按照单字节来统计长度,就是6 echo substr("中文",0,1) // 取0到1个字节,也就是e4,并不对应某个字符的编码,所以乱码 echo substr("中文",0,3) // 取0到3个字节,刚好把`中`的编码取出来
Rentetan PHP tidak menyimpan maklumat pengekodan aksara, jadi asli Fungsi pengendalian tidak mengetahui bagaimana data binari sepadan dengan teks, dan hanya boleh [menganggap] bahawa satu aksara sepadan dengan satu bait. Ini mencukupi apabila memproses kod Bahasa Inggeris dan ASCII lain, tetapi untuk bahasa Cina dan [aksara berbilang bait] lain, ralat akan berlaku.
Sebaliknya, kita boleh melihat apa yang dipanggil bahasa asas yang menyokong Unicode:
Anda boleh melihat bahawa dalam JS, berbilang perkataan boleh dikenali dan diproses dengan betul watak bahagian. Maksudnya, semasa menyimpan, maklumat pengekodan teks juga disimpan. (Tekaan saya di sini ialah nilai Unicode teks disimpan, tetapi saya tidak pasti kerana saya tidak memahami prinsip asas JS)
var string = "中文" console.log(string.length); // 2 string.substr(0,1) // 中
Pembelajaran yang disyorkan: "
Tutorial Video PHP// 脚本类型为UTF-8 echo strlen("中文"); // 6 echo mb_strlen("中文","UTF-8"); //2 使用mb_strlen ,并传入编码 utf-8, 就会把二进制E4B8ADE69687当做utf-8的处理能正确处理 echo mb_strlen("中文"); //2 如果不传编码UTF-8,则函数会自动确定编码,文档说:如果省略,则使用内部字符编码。所以这里也当做UTF-8来处理。 echo mb_strlen("中文","GBK"); //3,如果传入编码GBK,则:e4b8ade69687会被当做gbk来处理,一个gbk字符占2字节,所以为:3
Atas ialah kandungan terperinci Apakah maksudnya php tidak menyokong unicode?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!