當公司網站出現亂碼時,可能是由於字符集設定不一致導致的。以下是一些常見的原因及解決方法:
1. 檢查資料庫字符集
- 確認資料庫的字符集設定是否正確。
-
登入資料庫並檢視當前字符集:
SHOW VARIABLES LIKE 'character_set_database';
-
如果字符集不是
utf8
或utf8mb4
,可以修改資料庫的字符集:ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
2. 檢查資料庫表和欄位的字符集
-
確認資料庫表和欄位的字符集是否一致:
SHOW CREATE TABLE table_name;
如果字符集不是
utf8
或utf8mb4
,可以修改表的字符集:ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3. 檢查 PHP 指令碼的字符集設定
- 確認 PHP 指令碼中的字符集設定是否正確。
-
在 PHP 指令碼中新增字符集宣告:
header('Content-Type: text/html; charset=utf-8');
-
在連線資料庫時指定字符集:
$conn = mysqli_connect('localhost', 'username', 'password', 'database_name'); mysqli_set_charset($conn, 'utf8mb4');
-
4. 檢查 HTML 檔案的字符集
- 確認 HTML 檔案中的字符集是否正確:
<meta charset="UTF-8">
5. 檢查檔案編碼
- 確認 PHP 和 HTML 檔案本身的編碼是否正確。
- 使用文字編輯器(如 Notepad++、VSCode 等)開啟檔案,檢查檔案編碼是否為 UTF-8。
- 將檔案編碼統一為 UTF-8 並儲存。
6. 檢查瀏覽器設定
- 確認瀏覽器的字符集設定是否正確。
- 清除瀏覽器快取並重新整理頁面。
7. 檢查伺服器配置
- 確認伺服器的字符集設定是否正確。
- 對於 Apache 伺服器,在
.htaccess
檔案中新增:AddDefaultCharset UTF-8
- 對於 Nginx 伺服器,在配置檔案中新增:
add_header Content-Type "text/html; charset=UTF-8";
- 對於 Apache 伺服器,在
8. 檢查資料庫查詢語句
- 確認從資料庫中查詢資料時是否指定了正確的字符集:
$query = "SELECT * FROM table_name"; $result = mysqli_query($conn, $query); mysqli_set_charset($conn, 'utf8mb4');
透過以上步驟,應該能夠解決網站亂碼的問題。如果問題仍然存在,請提供更多具體的資訊,以便進一步排查。