在 PHP 中,中文輸入不是一件簡(jiǎn)單的事情。由于中文編碼問(wèn)題和字符集轉(zhuǎn)換問(wèn)題,會(huì)經(jīng)常出現(xiàn)亂碼的情況。在我們的開(kāi)發(fā)過(guò)程中,大多數(shù)情況都是要處理中文字符串。所以解決中文輸入問(wèn)題是至關(guān)重要的。
在 PHP 中,中文輸入問(wèn)題通常表現(xiàn)為:從數(shù)據(jù)庫(kù)取出的數(shù)據(jù)亂碼,從 POST 或 GET 取到的數(shù)據(jù)亂碼,寫(xiě)入文件的中文出現(xiàn)亂碼,等等。下面我們來(lái)逐一講解如何避免這些問(wèn)題。
解決從數(shù)據(jù)庫(kù)取出的中文字符亂碼問(wèn)題
<?php $conn = mysql_connect("localhost","root",""); mysql_select_db("mydatabase"); mysql_query("SET NAMES utf8"); $result = mysql_query("SELECT * FROM mytable WHERE id=1"); while($row = mysql_fetch_array($result)){ echo $row['content']; } mysql_close($conn); ?>
在 PHP 中,從數(shù)據(jù)庫(kù)取出中文字符經(jīng)常出現(xiàn)亂碼。解決這個(gè)問(wèn)題最簡(jiǎn)單的方法就是在連接 MySQL 數(shù)據(jù)庫(kù)時(shí)就設(shè)置字符集編碼,可以使用以下代碼:
mysql_query("SET NAMES utf8");
解決 POST 或 GET 出現(xiàn)中文字符亂碼問(wèn)題
在 PHP 中,從 POST 或 GET 取出中文字符也經(jīng)常出現(xiàn)亂碼。這個(gè)問(wèn)題可以使用以下方案解決:
// 使用 iconv 函數(shù)轉(zhuǎn)換編碼 $value = $_POST['name']; $value = iconv("GBK","UTF-8",$value); // 使用 mb_convert_encoding 函數(shù)轉(zhuǎn)換編碼 $value = $_POST['name']; $value = mb_convert_encoding($value, "UTF-8", "GBK");
解決寫(xiě)入文件的中文字符亂碼問(wèn)題
在 PHP 中,寫(xiě)入文件的中文字符也會(huì)出現(xiàn)亂碼。這個(gè)問(wèn)題可以使用以下方案解決:
// 打開(kāi)文件,并設(shè)置字符集編碼 $fp = fopen($filename, "w"); fwrite($fp, "\xEF\xBB\xBF" . $content); // 首先寫(xiě)入BOM字符 fclose($fp);
上面的代碼中,我們先打開(kāi)文件,然后寫(xiě)入 BOM 字符,最后寫(xiě)入內(nèi)容。這個(gè)方法可以避免出現(xiàn)亂碼問(wèn)題。
總之,在 PHP 中,處理中文字符需要特別小心,需要避免出現(xiàn)亂碼。我們需要結(jié)合具體情況采取不同的編碼處理方法,才能做到最好的解決方案。