应用程序我保持负载从网络日志提取到使用“latin1的”字符集一个MySQL表列的用户代理。 偶尔,它无法加载,看起来像这样用户代理:
Mozilla/5.0 (Iâ?; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML^C like Gecko) Version
我怀疑这是窒息Iâ?
。 我的工作弄清楚这是否应该得到支持,或者如果它是由上游的日志系统介绍了腐败。 这是一个HTTP标头中的合法用户代理?
应用程序我保持负载从网络日志提取到使用“latin1的”字符集一个MySQL表列的用户代理。 偶尔,它无法加载,看起来像这样用户代理:
Mozilla/5.0 (Iâ?; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML^C like Gecko) Version
我怀疑这是窒息Iâ?
。 我的工作弄清楚这是否应该得到支持,或者如果它是由上游的日志系统介绍了腐败。 这是一个HTTP标头中的合法用户代理?
RFC 2616(HTTP 1.1) 表示该消息头部内容必须是“由...组成任*TEXT
或令牌,分离器的组合,以及引用字符串”。 如果你看一下定义为TEXT等你会发现,法律性质是那些具有字节值不在[0,31]范围和不等于127; 因此字符如â
是,据我可以告诉合法的,因为每规范。
从技术上讲,八位字节> 127允许在注释中。 2616让他们默认为ISO-8859-1,但HTTPbis(RFC 2616即将改版机)已删除该规则,这样有时在遥远的未来,我们也许能够移动到一个理智的编码。
建议:去除所有八位位组> 127。
HTTP 1.1 RFC2616指ISO-8859-1,这是一种基于拉丁文单字节字符集。
与HTTP流量应该是单字节的考虑,我也是使用latin1字符我类似的日志设置。 这个决定只是为了让我的小指标。
如果使用UTF8与VARCHAR,仅是多字节字符需要额外的字节,所以在表空间中,它没有太大的额外费用。 然而,索引存储固定宽度,所以,他们与以防万一空格填充你需要他们(UTF8指标是三倍大LATIN1索引)。
如果偶尔奇头不可读它不会影响我。 但是,如果你不是索引列,你可能也使用UTF8。