zoukankan      html  css  js  c++  java
  • [小问题笔记(六)] 解决JS已执行,输出内容乱码问题. 顺带总结编码相关知识

    问题:

    JS输出的内容出现了乱码。如图:

    分析:既然年和月的数字可以正常显示,证明js加载和执行都没有问题

    解决:把js引用处的编码方式改成当前页面编码一致。charset="gb2312"(反正不是gb2312就是UTF-8)

    <script type="text/javascript" src="/Js/My97DatePicker/WdatePicker.js" charset="gb2312"></script>

    常见编码:

    • ASCII/EASCII(ISO/IEC 646)
    • GB2312/GBK/GB18030
    • Unicode/UTF8/UTF16

    最早,ASCII 使用一个字节的低7位的不同组合来表示字母数字和一些其他字符,2^7 = 128 7位二进制共可以代表128个字母和符号。

    后来,为了表示更多的字符便将ASCII扩展为8位,称为EASCII,并等同于国际标准ISO/IEC 646

    为了让汉语也能数字化,发明了gb2312,gb2312使用两个字节16位表示汉字,为了兼容ASCII将每个字节的高8位置为1,共有14位可用,2^14 = 16384,但GB 2312标准共收录6763个汉字,后来发现不太够用,又扩展了gbk,gb18030。

    终于老外发明了 Unicode,一切都解决了,Unicode有两个字节的16位的编码空间,Unicode是一个归法,比较常用的有UTF8和UTF16两种编码方式。

    UTF8在web领域比较常用,是一种变长的编码方式,UTF16是一种定长方式。

    HTML编码:

    如果既没有设置http头,也没有meta标签,那么用户代码会使用系统的默认设置,windows下的中文环境的默认编码一般是 gb2312,所以用户代理就会用gb2312来解码页面,如果页面的编码也刚好是gb2312那么万事ok,否则就会出现乱码。

    CSS编码:

    如果HTML文件和CSS文件的编码不一致,那么就需要单独声明。

    在html4中link有一个属性——charset可以用来指定引入css文件的编码,但这个属性在html5中已经废弃了,虽然废弃了但在浏览器中还是可以使用的,下面的代码显示指定css文件的编码为gbk。

    <link rel="stylesheet" href="gbk-1.css" charset="gbk">

    然而html5废弃了这个属性那么该怎么办呢,其实废弃这个属性,是因为把这个功能代理给了css文件,css中有一个@charset指定,可以指定页面的编码,将下面的代码放在css文件的顶部,会显示声明页面的编码为utf8。

     @charset utf-8 

    这时候,如果即设置了charset属性,又设置了@charset指定,结果是@charset指定会覆盖link的charset属性。charset属性已经废弃了,建议用css的@charset指令。

    JavaScript编码:

    除了像文章开始那样指定js编码,还要注意的是:在js中仅支持utf16编码(utf16的子集——ucs-2)这导致在js中无法表示BMP之外的文字。(详情请戳),如js执行:

    '不'.charCodeAt(0)

    输入 19981,既十六进制的 4E 0D , 既 ”不“ 的utf16编码。

    相关知识点:

    json只支持utf8编码

  • 相关阅读:
    编译mysql4.0时候出现错误提示checking "LinuxThreads"... "Not found"
    rhel5上使用源代码安装mysql4.0.x
    T400|X220打开AHCI的正确步骤
    MySQL主从同步、读写分离配置步骤
    Icc编译MySQL性能调研
    Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
    hadoop 异常记录 ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times
    创建代理访问.NET WebServices
    国际:2007年最令人失望的九大新兴技术
    黑客惊天发现:苹果能监视iPhone的一举一动
  • 原文地址:https://www.cnblogs.com/hydor/p/4076227.html
Copyright © 2011-2022 走看看