將網頁上傳至免費空間(尤其是海外主機)後出現亂碼,主因是伺服器預設編碼(常為 ISO-8859-1 或 UTF-8)與網頁實際編碼(Big5、GB2312、UTF-8)不匹配。本文依檔案類型提供精確的編碼宣告語法,並補充 ASP 與 Access 資料庫的特殊處理技巧,讓中文內容完美落地。
瀏覽器優先依據 HTTP Response Header Content-Type: text/html; charset=xxx 解碼;若無標頭,再讀取 <meta> 或伺服器端腳本設定。建議兩端同步設定,確保萬無一失。
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- 或 charset=big5 / gb2312 依實際編碼 -->
</head>
在 每支 PHP 檔案最開頭( 加入:
<?php header("Content-Type: text/html; charset=utf-8"); ?>
或修改 php.ini:default_charset = "UTF-8"(需主機權限)。
ASP:檔案第一行插入<% Response.CodePage = 65001 : Response.Charset = "utf-8" %>
(65001 = UTF-8;950 = Big5;936 = GB2312)
特殊情況:
<%@ Language=VBScript %>,改為:<%@ Language=VBScript %><% Response.CodePage=65001:Response.Charset="utf-8"%><!-- #include ... --> 或 <% Option Explicit %>,則在其下一行插入編碼宣告。JSP:頁面頂端加入<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
utf8_general_ci / utf8mb4_general_ci;連線字串加入 Charset=utf8 / Character Set=utf8mb4。<configuration>
<system.web>
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
</system.web>
</configuration>
編碼問題看似瑣碎,實則是跨平台部署的關鍵細節。掌握「雙重宣告、資料庫同步、上傳驗證」三步驟,免費空間也能跑出專業級的中文網站。