我的项目基于CodeIgniter,但我想这个问题根本不是关于它的。
首先,我启用了查询字符串和搜索功能。搜索字符串传递给“searchterm”变量,当我通过表单传递它时,它工作正常,看起来像:
http:// local / home / search /?searchterm = testtesttest
好的,现在当我在搜索表单中输入一些西里尔字符串时,它的工作正常,例如:URI
http:// local / home / search /?searchterm =привет(在chrome中)或 http:// local / home / search /?searchterm = (在IE,Opera等中)
以上两种情况正常,但是当我直接从地址栏输入CYRILLIC搜索字符串时(例如,在Opera或IE中),它不想搜索任何东西。 $ _GET ['searchterm']为空,对于QUERY_STRING,它类似于searchterm = (来自探查器的所有数据)。
我从控制器urldecode我的字符串,但它不知何故不起作用。我也尝试了一些iconv()案例,从我用Google搜索过的,但它们也没有用。
所以问题是为什么除了chrome之外的所有其他浏览器都没有从地址栏中检索CYRILLIC $ _GET变量(如果从那里输入的话)?通过表格一切正常。
先谢谢你,伙计们。希望得到你的帮助。
P.S。 我也发现:
%D0%BD%D0%BE%D1%87%D0%B0%D0%BB%D0%BE
%ED%E0%F7%E0%EB%EE
不要忘记使用Chrome一切正常!也许这是因为默认情况下,这个浏览器不像其他浏览器那样以错误的方式编码西里尔符号。
答案 0 :(得分:0)
我猜这里的部分问题是你在URL中使用UTF-8字符...你可以设置PHP默认使用php.ini文件中的UTF-8或添加{{ 1}}在你的应用程序的某个地方,(如果我不能修改.ini文件,我将它添加到CodeIgniter中的根index.php文件中)。
我在Firefox和Safari中快速测试了日语和你的例子,他们都显示了正确的字符串。有关为UTF-8设置Apache / PHP的更多信息,请参阅this excellent guide。