字符编码

UTF8文件带BOM引起的问题

时光怂恿深爱的人放手 提交于 2020-02-14 16:37:34
起因是公司iOS端竟然加载出来了HTML代码,百思不得其解,查文献,原来如此... UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM。 所以 不含 BOM 的 UTF-8 才是标准形式, 在 UTF-8 文件中放置 BOM 主要是微软的习惯 (顺便提一下: 把带有 BOM 的小端序 UTF-16 称作「Unicode」而又不详细说明,这也是微软的习惯 )。 BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order) 。 微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 ASCII 等编码明确区分开,但这样的文件在 Windows 之外的操作系统里会带来问题。 「UTF-8」和「带 BOM 的 UTF-8」的区别就是有没有 BOM。即文件开头有没有 U+FEFF。 UTF-8 的网页代码不应使用 BOM,否则常常会出错。这是一个小例子: 为什么这个网页代码 <head> 内的信息会被浏览器理解为在 <body> 内? 另附《The Unicode Standard, Version 6.0》之 3.10 D95 UTF-8 encoding scheme 的一段话: While there is obviously no need for a byte

Python乱码、编码问题汇总

ぐ巨炮叔叔 提交于 2020-02-14 16:36:29
为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成“\xe4\xb8\xad\xe6\x96\x87”的形式? 为什么会报错“U nicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)”?本文就来研究一下这个问题。 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。 decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。 encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。 因此, 转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码 代码中字符串的默认编码与代码文件本身的编码一致。 如:s='中文' 如果是在utf8的文件中

【STM32H7教程】第52章 STM32H7的LTDC应用之点阵字体和字符编码(重要)

﹥>﹥吖頭↗ 提交于 2020-02-14 14:49:04
完整教程下载地址: http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第52章 STM32H7的LTDC应用之点阵字体和字符编码(重要) 本章节主要为大家讲解ASCII字符集,ASCII扩展字符集,GB2312字符集,GBK字符集和Unicode字符集。其中,字符编码这块涉及到的知识点非常多,特别是Unicode字符集的编码,涉及到的知识点极其多。大家如果有精力的话,最好可以花点时间把Unicode的发展史捋清楚了。本章节笔者能够做的是把相关的知识点告诉大家,让大家有一个全面的认识。 52.1 初学者重要提示 52.2 编码基础知识 52.3 汉字点阵原理 52.4 总结 52.1 初学者重要提示 本章节讲解的GB2312和GBK比较容易理解,而Unicode是全球统一码,所以涉及到的知识点比较多,也复杂些。 当前Windows系统字符管理已经全部采用Unicode字符集,编码形式是UTF-16 LE (LE表示小端格式)编码。比如我们通过记事本保存的时候选择编码类型Unicode,其实就是选择的UTF-16 LE。而我们平时所说的中文版Windows系统是指用户在选择不支持Unicode的程序中显示文本时所使用的语言。 区分清楚什么是字符,字符集。字符(Character)是各种文字和符号的总称,包括各国家文字

关于BOM UTF8

烈酒焚心 提交于 2020-02-14 00:19:41
这三篇可以看下: http://www.zhihu.com/question/20167122 http://www.cnblogs.com/DDark/archive/2011/11/28/2266085.html https://segmentfault.com/a/1190000004321605 UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM。 所以 不含 BOM 的 UTF-8 才是标准形式, 在 UTF-8 文件中放置 BOM 主要是微软的习惯 (顺便提一下: 把带有 BOM 的小端序 UTF-16 称作「Unicode」而又不详细说明,这也是微软的习惯 )。 BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order) 。 微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 ASCII 等编码明确区分开,但这样的文件在 Windows 之外的操作系统里会带来问题。 「UTF-8」和「带 BOM 的 UTF-8」的区别就是有没有 BOM。即文件开头有没有 U+FEFF。 UTF-8 的网页代码不应使用 BOM,否则常常会出错。这是一个小例子: 为什么这个网页代码 <head> 内的信息会被浏览器理解为在 <body> 内? 另附《The

mysql jdbc 中文乱码解决方案

末鹿安然 提交于 2020-02-13 19:10:44
对于mysql数据库而言,解决中文乱码,可以从两个方向考虑,一个是通过修改mysql服务器端的配置文件/etc/mysql/my.cnf来支持中文,比如: ... [mysql] default-character-set=utf8 ... 但是,修改配置文件需要重启服务,尤其是对于已经在线上运行的数据库或者“老”的数据库实例(有可能是多实例或集群)而言,显然通过修改配置文件来操作是不适合的,甚至是不被DBA允许的,通常能想到的办法是在客户端或者JDBC连接时定制支持中文的编码格式(通常使用UTF-8),这样插入数据的时候,让mysql为自动为我们转码,可行的办法有两种: 1、如果是通过DriverManager.getConnection(url)编码方式操作JDBC,可以在JDBC的url中追加useUnicode=true&characterEncoding=UTF-8解决乱码问题。 jdbc.url=jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=UTF-8 2、如果是通过其它数据源,比如DBCP、tomcat-jdbc、c3p0、spring-jdbc、hibernate读取配置文件,在url中追加useUnicode=true&characterEncoding=UTF-8是不起作用的

Unicode字符编码规范

半世苍凉 提交于 2020-02-13 07:47:46
http://www.aoxiang.org 2006-4-2 10:48:02 Unicode是一种字符编码规范 。   先从ASCII说起。ASCII是用来表示英文字符的一种编码规范,每个ASCII字符占用1个字节(8bits)   因此,ASCII编码可以表示的最大字符数是256,其实英文字符并没有那么多,一般只用前128个(最高位为0),其中包括了控制字符、数字、大小写字母和其他一些符号 。   而最高位为1的另128个字符被成为“扩展ASCII”,一般用来存放英文的制表符、部分音标字符等等的一些其他符号,这种字符编码规范显然用来处理英文没有什么问题。(实际上也可以用来处理法文、德文等一些其他的西欧字符,但是不能和英文通用),但是面对中文、阿拉伯文之类复杂的文字,255个字符显然不够用   于是,各个国家纷纷制定了自己的文字编码规范,其中中文的文字编码规范叫做“GB2312-80”,它是和ASCII兼容的一种编码规范,其实就是利用扩展ASCII没有真正标准化这一点,把一个中文字符用两个扩展ASCII字符来表示。   但是这个方法有问题,最大的问题就是,中文文字没有真正属于自己的编码,因为扩展ASCII码虽然没有真正的标准化,但是PC里的ASCII码还是有一个事实标准的(存放着英文制表符),所以很多软件利用这些符号来画表格。这样的软件用到中文系统中

XAML 字符转义

廉价感情. 提交于 2020-02-12 18:26:40
在 写xaml的使用遇到了一些特殊字符,这里记录一下特殊字符转义。 这些特殊字符遵循用于编码的万维网联合会(W3C) XML 标准。 下表显示这组特殊字符的编码语法: 字符 语法 描述 < &lt; 小于符号。 > &gt; 大于符号。 & &amp; & 符号。 " &quot; 双引号。 参见: https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/advanced/how-to-use-special-characters-in-xaml 来源: https://www.cnblogs.com/azsunqi/archive/2020/02/12/12299888.html

哈夫曼树与哈夫曼编码

怎甘沉沦 提交于 2020-02-12 13:03:57
哈夫曼树与哈夫曼编码 术语 : i)路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。 路径中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。 ii)结点的权及带权路径长度 若对树中的每个结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。 结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。 iii)树的带权路径长度 树的带权路径长度:所有 叶子结点 的带权路径长度之和,记为WPL。 先了解一下哈夫曼树,之后再构造一棵哈夫曼树,最后分析下哈夫曼树的原理。 1)哈夫曼树 哈夫曼树是这样定义的:给定n个带权值的节点,作为叶子节点,构造一颗二叉树,使树的带权路径长度达到最小,这时候的二叉树就是哈夫曼树,也叫最优二叉树。 哈夫曼树具有如下性质: 1)带权路径长度最短 2)权值较大的结点离根较近 2)构造哈夫曼树 构造哈夫曼树的步骤如下: 假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为: 1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点); 2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树, 且新树的根结点权值为其左、右子树根结点权值之和 3)从森林中删除选取的两棵树

计算机编码

强颜欢笑 提交于 2020-02-12 05:29:52
ASCII码 可以先让学生看图片,然后再介绍ascii码 假如我们就已经有这么一张表了 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于 拉丁字母 的一套电脑编码系统,主要用于显示现代 英语 和其他 西欧 语言。它是现今最通用的单字节编码系统,并等同于 国际 标准ISO/IEC 646。 由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为 ASCII 编码,比如大写字母 A 的编码是 65 ,小写字母 z 的编码是 122 。后128个称为 扩展ASCII 码。 那现在我们就知道了上面的字母符号和数字对应的表是早就存在的。那么根据现在有的一些十进制,我们就可以转换成二进制的编码串。 比如 一个空格对应的数字是0 翻译成二进制就是0(注意字符'0'和整数0是不同的) 一个对勾√对应的数字是251 翻译成二进制就是11111011 提问:假如我们要打印两个空格一个对勾 写作二进制就应该是 0011111011, 但是问题来了,我们怎么知道从哪儿到哪儿是一个字符呢? 论断句的重要性与必要性: 上次在网上看到个新闻,讲是个小偷在上海被捕时高喊道:“我一定要当上海贼王!” 正是由于这些字符串长的长,短的短

Python-基础-day6

孤人 提交于 2020-02-12 05:29:11
1、二进制 前言:计算机一共就能做两件事:计算和通信 2、字符编码 生活中的数字要想让计算机理解就必须转换成二进制。十进制到二进制的转换只能解决计算机理解数字的问题,那么文字要怎么让计算机理解呢? 于是我们就选择了一种方式,既然数字可以转换成十进制,我们只要想办法吧文字,转换成数字,这样文字不就可以表示成二进制了么? 那么问题来了:怎么把文字转换成数字呢?就是强制转换 我们自己强行约定了一个表,把文字和数字对应上,这张表就相当于翻译,我们可以拿着一个数字来对比对应表找到相应的文字,反之亦然。 ASCII码 我们先来看一张图片,在了解ascii码 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于 拉丁字母 的一套电脑编码系统,主要用于显示现代 英语 和其他 西欧 语言。它是现今最通用的单字节编码系统,并等同于 国际 标准ISO/IEC 646。 由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为 ASCII 编码,比如大写字母 A 的编码是 65 ,小写字母 z 的编码是 122 。后128个称为 扩展ASCII 码。 那现在我们就知道了上面的字母符号和数字对应的表是早就存在的。那么根据现在有的一些十进制