PHP:$ _GET中的奇怪字符串编码

时间:2015-12-31 13:40:21

标签: php encoding

我有一个客户端将以下字符串发送到服务器:

3%D3%E1f%7C%AF%B0a%B58%81%92%F9M%90%0CD%A0Y%9C // string in the actual URL
3Óáf|¯°aµ8’ùMD Yœ // var_dump($_GET)

原始字符串应为:

33D3E1667CAFB061B5388192F94D900C44A0599C

我的问题是我无法弄清楚如何对此进行编码/解码,因此我可以执行数据库搜索,因为排序规则类型不匹配。我尝试过urlencode / urldecodemb_string_convertutf8_encodeiconv,但没有运气。有什么想法吗?

当尝试使用字符串进行搜索时,Laravel会抛出以下异常:

'SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE)...

我无法控制客户端的编码。奇怪的值是使用Laravel's Log::imfo()

将其记录到日志文件中

2 个答案:

答案 0 :(得分:2)

您是否尝试过发送请求而不是get请求,并将该字符串作为实际字符串发送。

或者可能将您的数据库编码更改为UTF-8(它处理瑞典语很好,无需选择拉丁语 - 瑞典语版本。)

答案 1 :(得分:1)

解决方案是使用bin2hex()函数调用检索参数。