我正在維護的應用程序使用'latin1'字符集將從Web日誌中提取的用戶代理加載到MySQL表列中。偶爾,它無法加載,看起來像這樣用戶代理:我懷疑這是窒息Iâ?
是否在HTTP標頭中合法使用unicode用戶代理?
Mozilla/5.0 (Iâ?; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML^C like Gecko) Version
。我正在努力弄清楚這是否應該得到支持,或者它是否由上游記錄系統引入了腐敗。這是HTTP頭中的合法用戶代理嗎?
HTTP規範早於Unicode。我確定我看到一些建議說輸出ASCII,但接受UTF-8。但我不記得我在哪裏看到的,這就是爲什麼這是一個評論,而不是一個答案。 – TRiG
@TRiG:聽起來像[魯棒性原則]的特定實例(http://en.wikipedia.org/wiki/Robustness_principle)。 – eggyal
一般來說,嘗試將任意數據存儲爲Latin-1可能是一個糟糕的主意,除非您可以保證您只能獲得可以符合Latin-1字符集的輸入。你爲什麼不使用UTF-8? – geoffspear