標籤:color set .net ini 設定 bst php decode type
今天簡單看了一下php,伺服器,瀏覽器如何設定編碼
1.php
在php設定檔php.ini中,可以設定字元編碼
; PHP‘s default character set is set to empty.; http://php.net/default-charsetdefault_charset = "gb2312"
在PHP 5.6及其之後,"UTF-8"是預設值(5.6之前是空值),對於以下函數:htmlentities(), html_entity_decode() and htmlspecialchars() ,如果他們的編碼參數被省略了,則default_charset的值用於這些函數的預設編碼.對於 iconv函數,如果其參數input_encoding 3.output_encoding/internal_encoding等沒有設定的話,也會採用default_charset的值,對於mbstring函數,如果mbstring.http_input mbstring.http_output mbstring.internal_encoding沒有設定的話,也會採取default_charset的值,
另外,不推薦將default_charset設為空白值.(Setting default_charset to an empty value is not recommended).
指令碼的編碼類別型一定要和default_charset一致,否則會亂碼的.
2.伺服器(如apache)在返迴響應頭content-type時,會參照php.ini的設定,
比如:
//php.ini中default_charset = "aaabbccc"
查看回應標頭:Content-Type: text/html; charset=aaabbccc
如果php指令碼中使用了header函數,則伺服器的回應標頭會遵循header函數的設定.
3.關於相應實體中的meta設定content-type
<head> <meta charset="UTF-8"> <title>Document</title></head>
它的優先順序是低於回應標頭中規定的content-type的,也就是說回應標頭中規定了編碼類別型,則瀏覽器會遵循回應標頭的設定(一般是這樣,最終決定權在瀏覽器手中)
4.瀏覽器編碼設定
對比了一下chrome,ff,360瀏覽器,ie8,發現chrome瀏覽器好像無視使用者的手動設定,具體機制不明白,而其他瀏覽器,只要使用者更改了編碼,則會按使用者指定編碼去解碼
從php指令碼到瀏覽器,編碼方式淺析