從php指令碼到瀏覽器,編碼方式淺析

來源:互聯網
上載者:User

標籤: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指令碼到瀏覽器,編碼方式淺析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.