Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php URL中用于数据库选择的特殊字符_Php - Fatal编程技术网

Php URL中用于数据库选择的特殊字符

Php URL中用于数据库选择的特殊字符,php,Php,我试图在URL中使用特殊的丹麦语字符(æå)作为GET参数。例如,我有一个URL: http://example.com?name=åge 该URL将自动转换为ASCII等效值,因此在URL中它将读取: http://example.com?name=%E5ge 当我访问并打印该值时,它工作正常,并将该参数显示为: åge 但是,我用它来选择数据库中的内容,这是行不通的。如果我在URL中使用ASCII版本,它不会从DB中选择任何内容,只会给我一个空结果。如果我强制URL不使

我试图在URL中使用特殊的
丹麦语
字符(æå)作为GET参数。例如,我有一个URL:

     http://example.com?name=åge
该URL将自动转换为ASCII等效值,因此在URL中它将读取:

    http://example.com?name=%E5ge
当我访问并打印该值时,它工作正常,并将该参数显示为: åge

但是,我用它来选择数据库中的内容,这是行不通的。如果我在URL中使用ASCII版本,它不会从DB中选择任何内容,只会给我一个空结果。如果我强制URL不使用ASCII,那么它就是:
http://example.com?name=åge
从数据库中选择时,它可以正常工作,但当我显示参数时,它显示如下:


我不知道该怎么解决这个问题。非常感谢您的帮助。

我会将参数转换为UTF-8,然后为UTF-8查询准备数据库,如下所示:

$name = utf8_encode($_GET['name']);
mysqli_query($mysqli_connector, "SET NAMES UTF8");
然后,准备您的查询

这应该行得通


我希望这有帮助

%E5
不是ASCII,而是ISO-8859-1。(ASCII仅为7bit)您应该改用UTF-8,在URL编码请求(å→ <代码>%C3%A5
),并且在输出处理中(
Ã¥
是\xC3\xA5被解释为拉丁文1时的外观)。你的DB做的是对的。哦,好吧,那我该怎么做呢?如果我制作这样的链接:/>那么该链接将使用您提到的ISO编码,将å转换为%E5。那么,我该如何强制它使用UTF-8编码呢?浏览器通常应该使用UTF-8编码本身(MSIE 5.0有一个配置选项,但通常是关闭的;不知道更新的版本)。如果您首先以UTF-8的形式交付页面,浏览器可能会得到线索。我从未见过浏览器在《永远》中不编码为UTF-8。啊,这就成功了。在处理这些字符时,我可以手动进行编码/解码。非常感谢。尽管如此,它仍然像这样显示:即使在解码之后?当我把它扔进数据库时它会工作(不知道为什么),但它仍然在页面上显示为那样?有什么想法吗?在编写网站代码时,字符集总是一个问题。根据我的经验,我总是在你的例子中将数据库、文件编码和HTML设置为UTF-8,如果你已经开发了很多。。。我不知道。尝试编码/解码或将html代码更改为utf8 ah,修复了它。我只是假设HTML5文档默认设置了这一点。我想不是