网页中文乱码
1)分析
code软件:sublime text。
sublime text默认使用UTF8编码格式打开文件,导致GBK编码格式的中文出现乱码,需要sublime text将文件以GBK打开即可。
首先插件安装:
安装SublimePackage Control。
在Sublime Text 2上用Ctrl+~打开控制台并在里面输入以下代码,Sublime Text 2就会自动安装Package Control:
import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print('Please restart Sublime Text to finish installation')
import urllib2,os; pf='PackageControl.sublime-package'; ipp=sublime.installed_packages_path();os.makedirs(ipp) if not os.path.exists(ipp) else None;urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler()));open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace('','%20')).read()); print('Please restart Sublime Text to finish installation')
重启SublimeText 2;
然后使用Ctrl+Shift+P打开命令行模式,在里面输入Install Package即可搜索需要的Package。使用“ConvertToUTF8”或“GBK Encoding Support”即可正常读取和写入CJK格式的文件了。
从而就可选择编码方式:
那么,真正造成HTML中文内容乱码的原因了?
html文件是有编码格式的,在特定的编辑器中才能看出来,并进行设置。
html文件中头部的"content-type"中设置的"charset"是告诉浏览器打开该文件的编码方式。
归结为一句,就是:浏览器中打开HTML文件编码方式与源文件编码方式不一致的原因!
最后,我们再来添加一些有关编码方式的知识:
Gbk和uff-8编码格式字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。
UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8节省空间。UTF-8则包含全世界所有国家需要用到的字符。UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示。比如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,而无需他们下载IE的中文语言支持包。
GBK包含全部中文字符;GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准。
所以,对于英文比较多的论坛,使用GBK则每个字符占用2个字节,而使用UTF-8英文却只占一个字节。UTF8是国际编码,它的通用性比较好,外国人也可以浏览论坛,GBK是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBK大。
详细内容可以去看看这个http://jingyan.baidu.com/article/47a29f24332012c0142399f1.html网站开发中常见的编码和乱码问题的解决。使用notepad的同学就要注意一点,这里就讲了在Notepad++和Sublime Text不一样,Notepad++中,默认UTF-8编码已经包含BOM,我们看到选择项里面还有一项"以UTF-8无BOM格式编码",这一项才是纯UTF-8格式的编码。
2)这样就可以去测试啦
声明文件打开编码方式,在head里添加:
<meta http-equiv="Content-Type" Content="text/html; charset=UTF-8" />
保存运行
这是说明是一致的编码格式。
假如我将HTML文件-save with GBK,运行,当然乱码啦