gpt4 book ai didi

php - 如何使用特殊字符正确读取用户代理

转载 作者:行者123 更新时间:2023-11-29 03:04:46 24 4
gpt4 key购买 nike

我最近有一些使用以下用户代理的访问者:

Mozilla/5.0 (Linux; U; Android 2.3.6; es-co; XT320 Build/GRK39F) 
AppleWebKit/533.1 (KHTML, like Gecko) Versión/4.0 Mobile Safari/533.1

我将这些插入到 mysql 表中的 utf8_general_ci 列中。我的 PHP 站点也以 UTF-8 格式提供。不幸的是,我从这些访问者那里得到了一些错误,如下所示:

Incorrect string value: '\xF3n/4.0...' for column 'useragent' at row 1 [1366]

因此导致问题的是 ó。为了解决这个问题,我也将我的 firefox 浏览器的用户代理更改为此(使用 UA 切换器插件),但它已完美地插入到我的数据库中。

那么,我的问题是:为什么在某些情况下它显然不起作用?这怎么能解决呢?我当然可以将 ó 替换为 o,但我认为这不会是我将来遇到的最后一个特殊字符......

最佳答案

您的数据库可能希望发送 UTF-8 编码数据,但用户代理莫名其妙地以 Latin-1 或其他一些专门编码进行编码。这不应该,因为 HTTP header 不应该使用非 ASCII 字符,因为没有指定 HTTP header 编码方式的机制,因此不可能知道正在处理的编码。

您发现了一个不合格的用户代理。您应该检查所有收到的字符串是否符合您的预期编码;例如使用 mb_check_encoding($str, 'UTF-8')。如果字符串不在预期的编码中,则所有赌注都将关闭,您可以做任何您认为正确的事情。丢弃该字符串,尝试猜测其编码并进行转换,替换无效字节或您喜欢的任何其他内容。

关于php - 如何使用特殊字符正确读取用户代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17556630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com