b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

对php接收到的GET方法接收到的中文乱码进行了深入研究

电脑杂谈  发布时间:2020-05-26 00:10:32  来源:网络整理

php过滤空格函数_php 过滤双引号_php 过滤乱码

我最近写了一个简单的页面,从浏览器传入中文参数(test.php?name = test),无论如何设置utf-8页面,它都会显示乱码. 解决方案很少,但是问题的原因是什么?没有人深入研究这个问题. 出于好奇php 过滤乱码,有必要确切地找出是什么原因造成的,这也是一个经验点!

首先看一下简单的测试代码:

<? php标头(“内容类型: 文本/ html;字符集= UTF-8”); $ name = $ _ GET ['name']; var_dump($ name);?>

php 过滤乱码_php过滤空格函数_php 过滤双引号

测试结果如下:

代码声明响应内容的编码为utf-8,并且显示的内容确实是乱码. 在这里,请注意var_dump输出的变量的长度仅为4. 显然,在utf-8编码下,两个汉字的长度必须大于4个字节. 然后,让我们看一下Firefox的URL来访问此页面

FireFox将自动对中文URL进行编码,因此我们可以看到测试变为%B2%E2%CA%D4. 显然,这里的单词是两个字节,这是中文编码格式,例如gb2313,gbk而不是UTF-8编码. 如果我们将页面的编码切换为gbk,则中文参数将正常显示,请参见下图

php 过滤双引号_php 过滤乱码_php过滤空格函数

接下来我们进行另一个测试,代码如下:

<? php标头(“内容类型: 文本/ html;字符集= UTF-8”); $ name = $ _ GET ['name']; var_dump($ name);?>

测试结果,通常显示为:

php 过滤乱码_php过滤空格函数_php 过滤双引号

那么,什么原因导致了这个问题?

答案是浏览器的默认编码可以解决问题. 我们都使用中文系统. 浏览器的默认编码自然会设置为本地化. 例如,我自己的计算机上IE和FireFox的默认编码均为gb系列.

当浏览器请求用户输入URL时,URL中的中文将以默认编码格式发送,而不是默认以页面编码格式发送. 这就是为什么页面上带有中文的链接正常并且我们手动输入的原因. 链接

php 过滤乱码_php 过滤双引号_php过滤空格函数

字符乱码的原因. 同样,如果将浏览器的默认编码调整为utf-8,则输入URL中的中文将按照utf-8进行编码.

除上述情况外,在以下情况下也会发生这种情况:

如果将由gbk编码的页面生成的地址链接到utf-8页面,则gbk页面的中文将按照gbk格式进行编码并传输到下一页,那么,乱码后肯定会出现乱码utf-8编码已收到.

IIS的URL重写模块. 重写的中文编码也是gbk. 如果您的页面是utf-8编码的php 过滤乱码,则重写参数将无效. 在这种情况下,我们需要使用PHP的内置转码功能来处理编码问题:

选项1:

选项2:

本文地址:


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-222200-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...