Php 口音、URL和Firefox

Php 口音、URL和Firefox,php,html,url,utf-8,urlencode,Php,Html,Url,Utf 8,Urlencode,我遇到了一些问题,不知道你们谁能帮我 我将我的站点和数据库设置为utf8。当我在“查询字符串”部分键入重音时,我遇到了一个问题,ã变成了%E3,但是如果我在页面中使用链接或表单,它会在url中给出%C3%A3 我能做什么 编辑:让我试着澄清一下: 我试图在我的URL(查询字符串)中使用重音字符,但我很难在多个浏览器中使用。一些浏览器,如Firefox和IE,根据我是在页面中使用表单还是在地址栏中键入重音字符,输出不同的百分比编码字符串。就像我在最初的问题中所说的那样,ã在url中以一种形式输入变

我遇到了一些问题,不知道你们谁能帮我

我将我的站点和数据库设置为utf8。当我在“查询字符串”部分键入重音时,我遇到了一个问题,ã变成了%E3,但是如果我在页面中使用链接或表单,它会在url中给出%C3%A3

我能做什么

编辑:让我试着澄清一下:

我试图在我的URL(查询字符串)中使用重音字符,但我很难在多个浏览器中使用。一些浏览器,如Firefox和IE,根据我是在页面中使用表单还是在地址栏中键入重音字符,输出不同的百分比编码字符串。就像我在最初的问题中所说的那样,ã在url中以一种形式输入变成%C3%A3,但如果我在地址栏中键入ã,浏览器会在url中将其更改为%E3

这对我来说很复杂,因为如果我得到%E3,那么在php/html中我会得到一个未知字符(这是菱形问号,对吗?)

希望这能有所帮助,否则请告诉我

ã在表单中输入的内容在url中变为%C3%A3

取决于表单编码,表单编码通常取自包含表单的页面的编码<代码>%C3%A9是
ã
的正确UTF-8 URL编码形式

如果我在地址栏中键入ã,浏览器会在url中将其更改为%E3

这取决于浏览器。在位置栏中的URL中放置非ASCII字符时:

http://www.example.com/test.p/café?café
WebKit浏览器将它们全部编码为UTF-8:

http://www.example.com/test.p/caf%C3%A9?caf%C3%A9
根据国际海事组织(IMO)的规定,哪一项是最正确的。但是,由于历史原因,IE和Opera仅使用操作系统的默认系统编码对输入到查询字符串中的文本进行编码。因此,在西欧Windows安装中(使用代码页1252),您可以获得:

http://www.example.com/test.p/caf%C3%A9?caf%E9
对于系统编码中不可用的字符,IE和Opera将其替换为
。当查询字符串中的所有字符被删除时,Firefox将使用系统编码,否则将使用UTF-8


可怕且不一致,但用户手动键入查询字符串的情况非常罕见。

我编辑了我的问题,并查看了以前提出的问题。谢谢。现在还不清楚:当你在HTML页面上有一个表单时,没有浏览器会输出URL。要发生某些事情,您必须在表单中输入文本,然后服务器必须处理表单,然后浏览器可能会选择显示不同的URL。因此,请用以下形式表述您的澄清:1。我就是这么做的。2.事情就是这样。3.马丁:OP使用的是
method=“GET”
(实际上是HTML表单的默认方法)。服务器完全可以控制是否显示不同的URL。服务器可能会选择发送重定向,然后URL将更改为服务器指定的重定向URL,否则URL将只是请求被激发到的URL(即,在form
action
属性中指定的URL,以及方法为
GET
的情况下在查询字符串中提交的值).谢谢你的回答-这就是我的感受。我想我应该将URL更改为非重音版本,以防用户单击或决定传递浏览器输出的非百分比编码URL。还有其他选择吗?再次感谢。我一直在做更多的实验,这真的让我头疼。我想去掉重音符号,但是如果我在url中键入重音符号,我尝试过的所有方法都会给我替换字符。我注意到谷歌接受了它——你知道我如何转换/处理它吗?感谢链接URI不是问题,只有当用户试图复制粘贴带有非ASCII查询字符串的IRI时,您才需要担心。如果您想在页面上放置一个可访问的URI,它必须已经
%
-编码:只需在UTF-8字符串上使用
rawurlencode()
直接写入
..?foo=caf%C3%A9
。加载时,浏览器通常会在地址栏中显示未缩放的版本。我不担心用户在URI中手动键入字符。