我遇到了一些问题,我想知道你们中是否有人可以帮助我。
我有我的网站&数据库设置为utf8。我在查询字符串部分中输入重音符号时遇到问题ã转到%E3 ,但如果我在页面中使用链接或表单,则会显示%网址中的C3%A3 。
我该怎么办?
编辑:让我试着澄清一点:
我正在尝试在我的网址(查询字符串)中使用带重音的字符,但我有点难以在多个浏览器中使用它。某些浏览器(如Firefox和IE)会输出不同的百分比编码字符串,具体取决于我是在页面中使用表单还是在地址栏中键入重音字符。就像我在原来的问题中所说的那样,在一个表格中输入的ã会在网址中转为%C3%A3 ,但如果我输入ã地址栏,浏览器会将其更改为网址中的%E3 。
这对我来说很复杂,因为如果我得到%E3 ,那么在php / html中我得到一个未知字符(这是钻石问号,对吗?)
希望这有帮助 - 让我知道。
答案 0 :(得分:6)
表格中输入的ã在网址中转为%C3%A3
取决于表单编码,通常取自包含表单的页面的编码。 %C3%A9
是ã
的正确UTF-8网址编码形式。
如果我在地址栏中输入ã,浏览器会将其更改为网址中的%E3。
这取决于浏览器。将非ASCII字符放在位置栏中的URL中时:
http://www.example.com/test.p/café?café
WebKit浏览器将它们全部编码为UTF-8:
http://www.example.com/test.p/caf%C3%A9?caf%C3%A9
根据IRI,IMO最正确。但是,出于历史原因,IE和Opera使用操作系统的默认系统编码来仅对输入到查询字符串中的文本进行编码。因此,在西欧Windows安装(使用代码页1252)上,您将获得:
http://www.example.com/test.p/caf%C3%A9?caf%E9
对于系统编码中不可用的字符,IE和Opera将其替换为?
。 Firefox将在查询字符串中的所有字符时使用系统编码,否则使用UTF-8。
可怕且不一致,但用户手动输入查询字符串的情况非常罕见。