赞
踩
Chrome的编码:
F12打开开发者模式,在控制台中输入如下命令来查看浏览器的编码:
同样的方法在edge中查看:
若用记事本创建一个文件,并包含中文内容,则两个浏览器都可以正常打开,没有乱码。
首先要明白上图中为什么浏览器的编码不同
原因是:浏览器是根据http响应消息头部中的 Content-type: text/html; charset=GB2312 来决定使用何种编码解释应答,也就是说apache服务器仍然用GB2312编码传递数据。
响应是由服务器做出的,所以一定和服务器配置有关。在Apache中的httpd.conf文件中可添加AddDefaultCharset UTF-8
来将编码设置为utf-8,但问题是自己写的gbk编码的文件同样会被编码为utf-8,中文会乱码,无法满足各种编码的需求。所以一般不添加,这样让写代码的人在代码中实现,决定用什么编码
例如下面的代码,告诉浏览器用gbk
header("Content-type: text/html; charset=gbk");
再将Apache中的httpd.conf文件中添加AddDefaultCharset UTF-8 试一下
查看自己物理机系统的编码:
这里的936表示的就是GBK。
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
echo "你好";
?>
</body>
</html>
在浏览器访问,运行效果如下如:
中文的 GDK 编码占2字节,UTF-8 编码占3字节,所以在utf-8写的“你好”两个字,转变为“浣犲ソ” 三个字。
但是如果将编码设置为带有BOM的UTF-8
则不会出现乱码
那如何用utf-8写文件,并被浏览器正确运行?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
echo "你好";
?>
</body>
</html>
在浏览器中打开,效果如下图
这时会发现浏览器中编码发生变化,下面再多尝试。
这时明白:决定浏览器的编码还可以通过代码来实现,但要求是要配置服务的的配置文件,
创建一个bird.java文件,(文件的编码为ansi)
public class bird {
public static void main(String []args){
System.out.println("大家好呀");
}
}
编译运行如图:
但如果改变文件编码为utf-8,结果就会变成这样
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。