2013-03-09 25 views
0

我可以設置「字符集」在後端(PHP):在後端與前端設置「字符集」

header('charset=utf-8'); 

我還可以將其設置在前端(HTML):

<meta charset="UTF-8"> 

我應該在哪裏設置它,爲什麼?

+1

在服務器端設置內容類型通常應該足夠了 - Meta標籤通常用於覆蓋您無法更改的服務器端設置。 (IIRC標籤在任何情況下都勝過標頭)。我會把它留給有實際資源的人來提供答案:) – 2013-03-09 16:18:56

+1

僅供參考:爲了對齊你的數據庫字符集(在MySQL的情況下),你可以使用:'mysql_query(「set names'utf8'」);' – karancan 2013-03-09 16:23:51

+2

@ Pekka웃 - 你沒記錯。 HTTP標頭擊敗HTML標籤,BOM擊敗HTTP標頭。用戶的瀏覽器選擇擊敗BOM。規則是[在這裏](http://www.w3.org/html/wg/drafts/html/master/syntax.html#determining-the-character-encoding)。 – Alohci 2013-03-09 19:30:02

回答

3

您也可以在服務器級別將其設置爲Apache或Nginx或其他配置。

簡而言之,對於大多數面向用戶的瀏覽器用例來說,這並不重要。大多數瀏覽器都會將後端和前端字符集標籤解釋爲相同。

也就是說,在很多情況下,在後端設置標籤是比較好的選擇。它稍微減少了發送給用戶的HTML總量,它將顯示在HEAD http請求中,等等。另外,如果設置在前端,某些其他元標記(如X-UA兼容元標記)在某些情況下表現得很奇怪。