Cara menukar pengekodan kod kacau php: 1. Tambahkan baris "
" pada halaman HTML 2. Tambah baris "header ("Kandungan -Jenis: text/html;charset=utf-8");". =utf-8'>
Persekitaran pengendalian artikel ini: sistem Windows 7, versi PHP 7.1, komputer DELL G3
php kod bercelaru Bagaimana hendak menukar pengekodan?
Masalah kod PHP bercelaru, UTF-8 (kod bercelaru)
1 penukaran kepada masalah pengekodan UTF-8
1 Tambah baris selepas kepala dan sebelum tajuk:
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
Pesanan tidak boleh salah, pastikan anda memasukkannya ke dalam.
Tajuk yang dipaparkan mungkin bercelaru!
Masalah pengekodan fail 2.html:
Klik menu editor: "Fail" -> "Simpan Sebagai", anda boleh melihat pengekodan fail semasa, pastikan pengekodan fail adalah : UTF -8,
Jika ia ANSI, anda perlu menukar pengekodan kepada: UTF-8.
3. Pengepala fail HTML Masalah BOM:
Apabila menukar fail daripada pengekodan lain kepada pengekodan UTF-8, kadangkala teg BOM ditambahkan pada permulaan fail,
Tag BOM boleh menyebabkan penyemak imbas memaparkan aksara bercelaru apabila memaparkan aksara Cina.
Cara memadam teg BOM ini:
1 Anda boleh membuka fail dengan Dreamweaver dan menyimpannya semula untuk mengalih keluar teg BOM!
2. Anda boleh membuka fail dengan EditPlus dan dalam menu "Keutamaan"->"Fail"->"Tandatangan UTF-8", tetapkannya kepada: "Sentiasa alih keluar tandatangan",
Kemudian simpan fail dan anda boleh mengalih keluar tag BOM!
4. Masalah pengekodan UTF-8 pelayan WEB:
Jika anda mengikuti langkah-langkah yang disenaraikan di atas dan masih mengalami masalah bercelaru bahasa Cina,
Sila semak isu Pengekodan anda dengan WEB pelayan digunakan
Jika anda menggunakan Apache, sila tetapkan charset dalam fail konfigurasi kepada: utf-8 (hanya kaedah yang disenaraikan di sini, sila rujuk fail konfigurasi apache untuk format tertentu)
Jika anda menggunakan Nginx, sila tetapkan: charset dalam nginx.conf kepada utf-8
Khususnya cari "charset gb2312;" atau pernyataan yang serupa dan tukarkannya kepada: " charset utf-8; ".
2. Penukaran halaman PHP kepada masalah pengekodan UTF-8
1. Tambah baris pada permulaan kod:
header("Content-Type: text/html;charset=utf-8");
2
Klik menu editor: "Fail"->"Simpan Sebagai", anda boleh melihat pengekodan fail semasa, pastikan pengekodan fail ialah: UTF-8,
Jika ia ANSI, anda perlu menukar pengekodan kepada: UTF-8.
3. Pengepala fail PHP Masalah BOM:
Fail PHP mesti tidak mempunyai teg BOM
Jika tidak, sesi tidak akan dapat digunakan dan akan terdapat gesaan yang serupa:
Amaran: session_start() [function.session-start]: Tidak boleh menghantar pengehad cache sesi - pengepala sudah dihantar
Ini kerana, apabila melaksanakan session_start(), seluruh halaman tidak boleh mempunyai Output , tetapi apabila teg BOM wujud dalam halaman PHP sebelumnya,
PHP menganggap teg BOM ini sebagai output, jadi ralat berlaku!
Jadi halaman PHP mesti memadamkan tag BOM
Cara untuk memadamkan tag BOM ini:
1 Anda boleh membuka fail dengan Dreamweaver dan simpan semula, iaitu, anda boleh mengalih keluar tag BOM!
2. Anda boleh membuka fail dengan EditPlus dan dalam menu "Keutamaan"->"Fail"->"Tandatangan UTF-8", tetapkannya kepada: "Sentiasa alih keluar tandatangan",
Kemudian simpan fail dan anda boleh mengalih keluar tag BOM!
4. Apabila PHP menyimpan fail sebagai lampiran, isu pengekodan UTF-8:
Apabila PHP menyimpan fail sebagai lampiran, nama fail mesti dikodkan GB2312,
jika tidak , jika terdapat bahasa Cina dalam nama fail, ia akan bercelaru:
Jika PHP anda sendiri ialah fail yang dikodkan UTF-8,
Anda perlu menukar pembolehubah nama fail daripada UTF-8 Ke GB2312:
iconv("UTF-8", "GB2312", "$filename");
5 Apabila tajuk artikel dipenggal dan dipaparkan, aksara bercelaru atau "?"Secara amnya apabila tajuk artikel sangat panjang, sebahagian daripada. tajuk akan dipaparkan, yang akan Memotong tajuk artikel,
Memandangkan aksara Cina dalam format pengekodan UTF-8 akan menduduki 3 aksara lebar,
Apabila memotong tajuk, kadangkala hanya 1 daripada aksara Cina akan menjadi aksara terpotong atau 2 aksara lebar, jika
tidak dipintas sepenuhnya, aksara bercelaru atau tanda soal "?" , dan tidak akan ada masalah:
3 Masalah menggunakan pengekodan UTF-8 untuk pangkalan data MYSQL
function get_brief_str($str, $max_length) { echo strlen($str) ."<br>"; if(strlen($str) > $max_length) { $check_num = 0; for($i=0; $i < $max_length; $i++) { if (ord($str[$i]) > 128) $check_num++; } if($check_num % 3 == 0) $str = substr($str, 0, $max_length)."..."; else if($check_num % 3 == 1) $str = substr($str, 0, $max_length + 2)."..."; else if($check_num % 3 == 2) $str = substr($str, 0, $max_length + 1)."..."; } return $str; }
1 phpmyadmin untuk mencipta pangkalan data dan jadual data
Apabila mencipta pangkalan data, sila tetapkan "Organisasi" kepada: "utf8_general_ci"
atau laksanakan pernyataan:
Apabila mencipta jadual data: Jika medan menyimpan bahasa Cina, Anda perlu menetapkan "Organisasi" kepada: "utf8_general_ci", Jika medan menyimpan bahasa Inggeris atau nombor, lalai adalah baik.CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Pernyataan SQL yang sepadan, contohnya:
2 Gunakan PHP untuk membaca dan menulis pangkalan data Selepas menyambung ke pangkalan data:CREATE TABLE `test` ( `id` INT NOT NULL , `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM ;
Sertai Dua baris:
mysql_query("set character set 'utf8'");//读库 mysql_query("set names 'utf8'");//写库
就可以正常的读写MYSQL数据库了。
四.JS相关的UTF-8编码问题
1.JS读Cookie的中文乱码问题
PHP写cookie的时候需要将中文字符进行escape编码,
否则JS读到cookie中的中文字符将是乱码。
但php本身没有escape函数,我们新写一个escape函数:
function escape($str) { preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r); $ar = $r[0]; foreach($ar as $k=>$v) { if(ord($v[0]) < 128) $ar[$k] = rawurlencode($v); else $ar[$k] = "%u".bin2hex(iconv("UTF-8","UCS-2",$v)); } return join("",$ar); }
JS读cookie的时候,用unescape解码,
然后就解决cookie中有中文乱码的问题了。
2.外部JS文件UTF-8编码问题
当一个HTML页面或则PHP页面包含一个外部的JS文件时,
如果HTML页面或则PHP页面是UTF-8编码格式的文件,
外部的JS文件同样要转成UTF-8的文件,
否则将出现,没有包含不成功,调用函数时没有反应的情况。
点击编辑器的菜单:“文件”->“另存为”,可以看到当前文件的编码,确保文件编码为:UTF-8,
如果是ANSI,需要将编码改成:UTF-8。
五.FLASH相关的UTF-8编码问题
FLASH内部对所有字符串,默认都是以UTF-8处理
1.FLASH读文普通本文件(txt,html)
要将文本文件的编码存为UTF-8
点击编辑器的菜单:“文件”->“另存为”,可以看到当前文件的编码,确保文件编码为:UTF-8,
如果是ANSI,需要将编码改成:UTF-8。
2.FLASH读XML文件
要将XML文件的编码存为UTF-8
点击编辑器的菜单:“文件”->“另存为”,可以看到当前文件的编码,确保文件编码为:UTF-8,
如果是ANSI,需要将编码改成:UTF-8。
在XML第1行写:
3.FLASH读PHP返回数据
如果PHP编码本身是UTF-8的,直接echo就可以了
如果PHP编码本身是GB2312的,可以将PHP转存成UTF-8编码格式的文件,直接echo就可以了
如果PHP编码本身是GB2312的,而且不允许改文件的编码格式,
用下面的语句将字符串转换成UTF-8的编码格式
$new_str = iconv("GB2312", "UTF-8", "$str");
再echo就可以了
4.FLASH读数据库(MYSQL)的数据
FLASH要通过PHP读取数据库中的数据
PHP本身的编码不重要,关键是如果数据库的编码是GB2312的话,
需要用下面的语句将字符串转换成UTF-8的编码格式
$new_str = iconv("GB2312", "UTF-8", "$str");
5.FLASH通过PHP写数据
一句话,FLASH传过来的字符串是UTF-8格式的,
要转换成相应的编码格式,再操作(写文件、写数据库、直接显示等等)
还是用iconv函数转换
6.FLASH使用本地编码(理论上不推荐使用)
如果想让FLASH不使用UTF-8编码,而是使用本地编码
对于中国大陆地区而言,本地编码是GB2312或GBK
AS程序内,可以添加以下代码:
System.useCodepage = true;
那么FLASH内所有字符都是使用GB2312的编码了
所有导入到FLASH或者从FLASH导出的数据,都应该做相应的编码转换
因为使用本地编码,会造成使用繁体中文地区的用户产生乱码,所以不推荐使用
推荐学习:《PHP视频教程》
Atas ialah kandungan terperinci Bagaimana untuk menukar pengekodan kod kacau php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!