php轉utf-8中文亂碼的解決方法:1、在程式碼開始處加入「header("Content-Type: text/html;charset=utf-8");」;2、將文件另存為「UTF-8」;3、刪除BOM標籤即可。
本教學操作環境:Windows10系統、PHP8.1版、DELL G3電腦
php轉utf-8中文亂碼怎麼辦?
PHP頁轉UTF-8編碼問題
1.在程式碼開始出加入一行:
header("Content-Type: text/html;charset=utf-8");
2. PHP檔案編碼問題
點擊編輯器的選單:“檔案”->“另存為”,可以看到目前檔案的編碼,確保檔案編碼為:UTF-8,
如果是ANSI,需要將編碼改成:UTF-8。
3.PHP檔案頭BOM問題:
PHP檔案一定不可以有BOM標籤
否則,會出現session不能使用的情況,並且有類似的提示:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
這是因為,在執行session_start() 的時候,整個頁面不能有輸出,但是當由於前PHP頁面存在BOM標籤,
PHP把這個BOM標籤當成是輸出了,所以就出錯了!
所以PHP頁面一定要刪除BOM標籤
刪除這個BOM標籤的方法:
1.可以用Dreamweaver開啟文件,並重新儲存,也就是可以移除BOM標籤!
2.可以用EditPlus開啟文件,並在選單「偏好設定」->「檔案」->"UTF-8標誌",設定為:「總是刪除簽章」,
然後儲存文件,即可以移除BOM標籤!
4.PHP以附件形式儲存檔案的時候,UTF-8編碼問題:
PHP以附件形式儲存文件,檔案名稱必須是GB2312編碼,
#否則,如果檔案名稱中有中文的話,將是顯示亂碼:
如果你的PHP本身是UTF-8編碼格式的文件,
#需要將檔案名稱變數由UTF-8轉成GB2312:
iconv("UTF-8", "GB2312", "$filename");
5.截斷顯示文章標題時,出現亂碼或「?」問號的問題:
一般文章標題很長的時候,會顯示一部分標題,會對文章標題進行截斷,
由於一個UTF-8編碼格式的中文字符會佔用3個字符寬度,
截取標題的時候,有時會只截斷到一個中文字符的1個字符或2字元寬度,
沒截取完整,將出現亂碼或「?」問號的情況,
用下面的函數截取標題,就不會有問題:
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; }
推薦學習:《PHP影片教學》
以上是php轉utf-8中文亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!