[小问题笔记(六)] 解决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编码
[小问题笔记(六)] 解决JS已执行,输出内容乱码问题. 顺带总结编码相关知识的更多相关文章
- 解决IntelliJ IDEA 控制台输出中文乱码问题
解决IntelliJ IDEA 控制台输出中文乱码问题 问题描述:如图,控制台输出的字符,乱码 解决方案 第一步:修改intellij idea配置文件: 找到Intellij idea安装目录,bi ...
- 【C++】解决c++中cout输出中文乱码问题
问题:cout输出中文乱码.例如下面的代码输出会乱码. cout << "成功!" << endl; 输出结果: 解决方案: 控制台还原旧版即可,打开程序- ...
- LoadRunner11脚本小技能之添加请求头+定义变量+响应内容乱码转换打印+事务拆分
一.添加请求头 存在一些接口,发送请求时需要进行权限验证.登录验证(不加请求头时运行脚本,接口可能会报401等等),所以需要在脚本中给对应请求添加请求头.注意:请求头需在请求前添加,包含url类.su ...
- 微信小程序笔记<四>page.js —— 页面注册
小程序的每个页面都是独立的,每个页面都必须有 page.js 和 page.wxhl 文件,page.json 和 page.wxss 文件非必要文件,注意如果创建 page.json 则至少保证有一 ...
- 微信小程序笔记<六>模块化 —— module.exports
微信小程序中所有 js 文件作用域皆为独立的,每一个 js 文件即为一个模块.模块与模块之间的引用通过 module.exports 或 exports 对外暴露接口. 注意: exports 是 m ...
- 【已解决】解决IntelliJ IDEA控制台输出中文乱码问题
IntelliJ IDEA 真的是一款很方便的Java开发工具,但是关于中文乱码这个问题我不得不吐槽,这个编码也弄得这么麻烦干嘛,真想找idea开发者干架,我敢打包票我能在一分钟之内一拳飞过去让他跪下 ...
- 如何解决js地址栏中传递中文乱码的问题
目标要求: 实现从A页面跳转至B页面,B页面接收A页面通过地址栏传递过来的中文参数,中文不能出现乱码. A页面部分代码(传递参数): var title = "这是中文"; var ...
- CLion 控制台输出内容乱码问题的解决方法
问题再现 #include "stdio.h" #include "stdlib.h" int main() { printf("嘤嘤嘤") ...
- php中如何解决显示数据库中的内容乱码
第一步: 第二步:在代码开始处加一行
随机推荐
- python - while语句/pass/死循环/break/continue/while...else...
程序开发的原则: 写重复代码 是可耻的行为: 1.while 条件: 执行代码... #循环打印0-100count = 0 while count <= 100: print("lo ...
- Best Reward---hdu3613(manacher 回文串)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3613 题意就是给你一个串s 然后求把s分成两部分之后的价值总和是多少,分开的串 如果是回文那么价值就是 ...
- MFC中使用用户剪贴板
代码逻辑: 拷贝功能: 1.从编辑控件中获取文本. 2.打开并清空剪贴板.(OpenClipboard,EmptyClipboard) 3.创建一个全局缓冲区.(GlobalAlloc) 4.锁定缓冲 ...
- Java编程:将具有父子关系的数据库表数据转换为树形结构,支持无限层级
在平时的开发工作中,经常遇到这样一个场景,在数据库中存储了具有父子关系的数据,需要将这些数据以树形结构的形式在界面上进行展示.本文的目的是提供了一个通用的编程模型,解决将具有父子关系的数据转换成树形结 ...
- 赵雅智_ListView_ArrayAdapter
ArrayAdapter六种构造方法的作用 ArrayAdapter<T>(Context context, int textViewResourceId); 上下文,布局文件 Array ...
- spring MVC学习(一)---前端控制器
1.spring MVC中的前段控制器就是DsipatcherServlet,它在spring MVC框架中的结构图如下: 2.DispatcherServlet其实就是一个Servlet,它继承了H ...
- Push h.264 rawdata to rtmp server
Push h.264 rawdata to rtmp server /* The MIT License (MIT) Copyright (c) 2013-2015 SRS(ossrs) Permis ...
- python学习笔记(三)函数
一.定义函数 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可. 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参 ...
- python练习题(持续更新中。。。。。)
1.检验注册用户是否合法:需要输入用户名,校验用户名是否被注册,如已注册,提示已经注册过,没注册就可以注册:用户名不能为空:用户名长度必须在6-13位之间:最多只能输入三次. users = ['aa ...
- mysql不乱码的思想总结
不乱码的思想:中文环境下建议选择utf-8 1.linux服务器端的设置: 1 [root@localhost app]# cat /etc/sysconfig/i18n 2 LANG="e ...