瀏覽網頁時, 中文變成亂碼的原因很多, 不是只有一種因素. 需足步解決
html標頭
在<head>標籤加入如下代碼
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head>
這是最常見的解決方式, 但在Chrome裏沒什麼用處, 在其他的瀏覽器可能有些用處.
網頁檔案編碼
網頁檔案存檔時的編碼方式. 如果是使用 notepad++編輯時, 需注意編碼方式如下圖
請將檔案轉成utf-8(BOM檔首). BOM是 byte-order marks的意思, 會在檔案最前面加入
EF BB BF 這三個標識符, 記錄此檔屬於utf-8
ps.請注意, 到目前這個步驟為止, 還不能使用utf-8 without BOM喔
Apache設定
更改 apache的 virtual-host.ini (Linux為 sudo vim 000-default.conf), 加入addDefaultCharset utf-8, 如下藍色
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "d:/server/web"
addDefaultCharset utf-8
</VirtualHost>
加完後記得重新啟動apache. (Linux為 sudo /etc/init.d/apache2 restart)
此項目更改後, 網頁檔案的編碼utf-8 無論有無BOM都可以了.
php.ini設定
php.ini 也要設定 default_charset=”UTF-8″, 不過預設就是utf-8. 此項若有更改, 一樣要重啟apache
ps : Linux的php.ini路徑在 /etc/php/7.2/apache2/php.ini
總結
講的這麼複雜, 總結二件事
1. apache 設定檔加入 addDefaultCharset utf-8
2. 網頁檔案存成 utf-8