我目前的工作,从暴雪社区API拉JSON数据,并与PHP解析它的应用程序。 我到了那里,在他们的名字一个特殊字符的字符,一切工作正常。
为了拉动字符的数据,我需要知道自己的角色名称和领域,他们都在。
我通过URL字符页面传递的名称和领域,并从那里使用该信息来拉字符数据。
在这一点上我的网址是像这样:
http://localhost/guildtree/characters.php?realm=argent-dawn&name=Ankzu
在这一点上,如果我尝试提取数据用于与口音我得到重新定向到我的错误页面,因为它不是一个有效的字符的字符。
但直到我开始URL重写,我发现我的问题。 我被重新定向到我的错误页面,因为沿线的特殊字符被替换为一些非常靠不住的字符地方。
与我的新的URL重写后续工作:
http://localhost/guildtree/argent-dawn/ankzu
然而,在他们的名字一个特殊字符的字符会导致错误消息。
http://localhost/guildtree/argent-dawn/notúk
结果在下面的错误消息:
“未找到
所请求的URL / guildtree /银色黎明/notúk在此服务器上找到。”
正如你可以看到U是被取代ú,但是当我复制并粘贴URL将U显示为%C3%BA
这是我的理解是为什么U是表现为ú的原因是因为两个字节的Unicodeú被压扁成导致ú显示两个一个字节的ASCII字符。
我已确保我所有的页面都在标题下面:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
为了让我的应用程序才能正常工作,我需要这些特殊字符能正确显示,所以我需要在U实际显示为U,不会出现ú但实际上是ú或%C3%BA。
字符的名称正在从URL仅仅作为拉:
$charName = $_GET['name'];
是否有可能进行编码$ CHARNAME正确显示特殊字符?
我已经试过所有我能想到的和已搜查在谷歌,但没有奏效。
同时,由于我使用的URL重写你会重写规则是允许这些特殊字符?
这是我目前的重写规则:
RewriteRule ^([a-zA-Z0-9_'-]+)/([a-zA-Z]+)$ characters.php?realm=$1&name=$2 [NC]
我知道,([A-ZA-Z] +)不会在所有允许的特殊字符,我当前已经努力让特殊字符才能正确显示。 如果使用([A-ZA-Z \ú] +),将工作,当它需要被显示显示该页面。 添加\ú的规则似乎是一个非常贫穷的方式来做到这一点,而使用重音字符对应的字符并不总是工作。
任何帮助将不胜感激。 如果您需要了解更多信息请咨询。
编辑:
我重写规则更改为以下允许信息被罚款拉,但创造了我的CSS重定向循环。
RewriteRule ^([a-zA-Z0-9_'-]+)/([^/]+)$ characters.php?realm=$1&name=$2 [NC]
例如我的CSS被重定向到
http://localhost/guildtree/css/error
代替
http://localhost/guildtree/css/style2.css
更新:
通过几个简单的测试:
$charName = $_GET['name'];
$charNameTEST = utf8_encode($charName);
将进行更改,但是当我将此到我的网页仍出现说:
“未找到
所请求的URL / guildtree /银色黎明/notúk在此服务器上找到。”
我认为,现在的主要问题是与URL重定向,因为JSON数据可以分析完全正常,当有重音符号。 我只是不明白为什么它一直显示我,这是对guildtree /银色黎明在浏览器栏/notúk,而是不停地尝试拉/ guildtree /银色黎明/notúk。