我正在维护的一个应用程序使用“latin1”字符集将从 Web 日志中提取的用户代理加载到 MySQL 表列中。有时,它无法加载如下所示的用户代理:
Mozilla/5.0 (Iâ?; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML^C like Gecko) 版本
我怀疑它在 Iâ?
上窒息。我正在努力弄清楚是否应该支持它,或者它是否是由上游日志系统引入的损坏。这是 HTTP header 中的合法用户代理吗?
最佳答案
RFC 2616 (HTTP 1.1) says消息头内容必须是 “由 *TEXT
或标记、分隔符和引号字符串的组合组成”。如果您查看 definitions对于 TEXT 等,您会发现合法字符是那些字节值不在 [0, 31] 范围内且不等于 127 的字符;因此,据我所知,â
之类的字符符合规范。
关于mysql - HTTP header 中的 unicode 用户代理是否合法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10384741/