最近有需要想自动获取当前文档编码,遇到了现在的问题:
之前想通过document.charset获取,遇到了各种坑~ 就查询了一下一些获取文档编码的方式
第一种:
document.charset
设置或检索使用的字符集编码的对象
A LINK SCRIPT可以设置charset属性值,只有设置了才可以获取该属性值
第二种:
document.defaultCharset
获取当前区域语言设置的默认字符编码
以上两种写法 Gecko不支持
第三种:
document.characterSet
该字符编码是用来渲染当前网页所使用的字符集,它的值不一定是当前页面的正确的字符编码(因为用户可以选择使用其他的编码来渲染当前页面)
总结:
document.charset是指认为设置的编码
document.defaultCharset是指地区默认编码
document.characterSet最终文档渲染的编码
备注:
<!DOCTYPE HTML> <html > <head> <meta charset="utf-8"> <!--meta content="text/html;charset=gbk"--> <script> alert("document.charset=>"+document.charset+"\ndocument.defaultCharset=>"+document.defaultCharset+"\ndocument.characterSet=>"+document.characterSet); </script> <head> <body> </body> </html>
各浏览器执行情况:
|
Chrome |
FF |
Opera |
Safari |
IE/6 |
document.charset |
UTF-8 |
undefined |
UTF-8 |
UTF-8 |
utf-8/utf-8 |
document.defaultCharset |
GBK |
undefined |
GBK |
ISO-8859-1 |
gb2312/gb2312 |
document.characterSet |
UTF-8 |
UTF-8 |
UTF-8 |
UTF-8 |
utf-8/undefined |
所以获取当前文档编码的方式,可以这样实现:
//实现获取当前页面编码 如果是UTF-8的就直接显示,如果不是就默认成GBK var fileCharset = document.charset ? document.charset : (document.characterSet ? document.characterSet : document.defaultCharset); var utf8Set = "utf-8|UTF-8"; if(utf8Set.indexOf(fileCharset)>-1){ charset = fileCharset; }else{ charset = "GBK"; } alert(charset);
参考:https://developer.mozilla.org/zh-CN/docs/DOM/document.characterSet