→ t7yang:雖然我還是搞不太清楚到底是伺服器送出的charset導致OP無法 04/03 15:22
→ t7yang:解析(對的,只是OP自己傻傻搞不清楚)還是OP沒有發送正確 04/03 15:25
→ t7yang:的Charset給伺服器,導致伺服器亂傳一個過來,還是... 04/03 15:25
Accept-charset是web browser->web server的request header
Content-type是web server->web browser的response header,後面可以接一個charset
我當初丟在Beta testing forum的文章
http://my.opera.com/community/forums/topic.dml?id=943172
----------
Opera 11.01連http://tw.search.yahoo.com
部分HTTP request header
GET / HTTP/1.1
Host: tw.search.yahoo.com
Accept-Language: zh-TW,en;q=0.9
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
部分HTTP response header
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
----------
11.10連http://tw.search.yahoo.com
部分HTTP Request header
GET / HTTP/1.1
Host: tw.search.yahoo.com
Accept-Language: zh-TW,zh;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
部分HTTP Response header
HTTP/1.1 200 OK
Content-Type: text/html; charset=ISO-8859-1
這邊的回應header就是ISO-8859-1
----------
11.10連http://tw.search.yahoo.com
並使用Opera Dragonfly設定HTTP Request header Accept-charset為
Accept-charset: big5, utf-8;0.8, *;0.1
部分HTTP Request header
GET / HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 5.1; U; zh-tw) Presto/2.8.130 Version/11.10
Host: tw.search.yahoo.com
Accept-Language: zh-TW,zh;q=0.9,en;q=0.8
Accept-Charset: big5, utf-8;0.8, *;0.1
Accept-Encoding: gzip, deflate
部分HTTP Response Header
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
----------
11.10連http://tw.search.yahoo.com
並使用Opera Dragonfly設定HTTP Request header Accept-charset為
Accept-charset: big5, *;0.1
部分HTTP Request header
GET / HTTP/1.1
Host: tw.search.yahoo.com
Accept-Language: zh-TW,zh;q=0.9,en;q=0.8
Accept-Charset: big5, *;0.1
Accept-Encoding: gzip, deflate
部分HTTP Response Header
HTTP/1.1 200 OK
Content-Type: text/html; charset=BIG5
不過剛剛用Opera 11.10測試的時候
(這邊似乎有問題,因為內容還是丟UTF-8版本,但是header是Big5)
----------
然後HTTP 1.1的情況,是可以不送Accept-charset啦...
不送代表client都能處理
然後Opera 11.10移除Accept-charset...
無視 opera:config#Network|HTTPAcceptCharset
所以那個選項設定了也沒用
至於我提到apache是想到根據client header決定回傳內容的方式
http://httpd.apache.org/docs/2.3/content-negotiation.html
httpd Negotiation Algorithm
是說我看到這段
Select variants with the best charset media parameters, as
given on the Accept-Charset header line. Charset ISO-8859-
1 is acceptable unless explicitly excluded. Variants with
a text/* media type but not explicitly associated with a
particular charset are assumed to be in ISO-8859-1.
不過我不確定他寫的associated with a particular charset
是說server沒指定Content-Type後面那個charset
還是指Accept-charset就是了
如果說預設給ISO-8859-1就:p
--
是說其實如果都丟UTF-8版本的話,Yahoo乾脆就直接回
Content-Type: text/html; charset=UTF-8就好了
(只是我不知道是不是每個環境都支援UTF-8就是了)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.140.247.185
→ weiyucsie:突然想到在putty用w3m,然後環境是big5這樣XD 04/03 16:44
推 t7yang:未看先推專業 版主M文 謝謝 XD 04/03 16:55
→ weiyucsie:我只是寫一些實驗結果而已orz... 04/03 17:08
※ 編輯: weiyucsie 來自: 220.140.247.185 (04/03 17:10)