utf8

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的文件中

sql修改权限文档

蹲街弑〆低调 提交于 2020-02-14 14:37:32
mysql权限回收 1、模拟test环境 检查库是否utf8 SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%'; +--------------------------+-----------------+ | Variable_name | Value | +--------------------------+-----------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | collation_connection | utf8_unicode_ci | | collation_database | utf8_unicode_ci | | collation_server | utf8_unicode

关于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

java UTF-8转换GB2312

一笑奈何 提交于 2020-02-13 19:57:57
Java则采用了平台无关的UNICODE,Java从一个byte流中读取一个字符串时,将把平台 相关的byte转变为平台无关的Unicode字符串。在输出时Java将把Unicode字符串转变为平台相关的byte流,如果某个Unicode字 符在某个平台上不存在,将会输出一个'?'。 GB2312编码中一个汉字是16位的,而UTF8中一个汉字却是24位的。 如果发出页面采用了UTF-8的编码,怎样实现转换到gb2312? private String utf8Togb2312(String str){ StringBuffer sb = new StringBuffer(); for(int i=0; i<str.length(); i++) { char c = str.charAt(i); switch (c) { case '+': sb.append(' '); break; case '%': try { sb.append((char)Integer.parseInt( str.substring(i+1,i+3),16)); } catch (NumberFormatException e) { throw new IllegalArgumentException(); } i += 2; break; default: sb.append(c); break; }

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是不起作用的

python3:(unicode error) 'utf-8' codec can't decode

一笑奈何 提交于 2020-02-13 17:56:09
基本知识:在python中默认的编码格式是 utf-8。所以怎么会报不能按 utf-8来解码嘞?一头雾水啊。 问题的解决: 使用notepad++打开test.py发现文件存储的格式是ANSI 只要将保存文件的格式换成UTF-8就好了 只用notepad++打开test.py >> 菜单栏Encoding(编码)>> Convert to UTF-8(转化成utf-8) 在运行test.py问题解决 即默认的文件编码格式个python的不同 来源: https://www.cnblogs.com/fairy-wzp/p/7133014.html

Git解决中文乱码问题

偶尔善良 提交于 2020-02-13 13:42:02
git status 乱码 解决方法: git config --global core.quotepath false git commit 乱码 解决方法: git config --global i18n.commitencoding utf-8 git status 乱码 解决方法: git config --global i18n.logoutputencoding utf-8 注意:如果是Linux系统,需要设置环境变量 export LESSCHARSET=utf-8 来源: https://www.cnblogs.com/yulongcode/p/12303180.html

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码还是有一个事实标准的(存放着英文制表符),所以很多软件利用这些符号来画表格。这样的软件用到中文系统中

Servlet——Servlet中文乱码问题

*爱你&永不变心* 提交于 2020-02-12 22:11:45
这是一个很烦人的小点,所以单独拿出来说一下,主要有以下解决方式 get请求中出现乱码。解决方式有三种:1.获取字符串 String name = request.getParameter("name") 之后使用new String(name.getBytes("iso-8859-1"),"utf-8") ;重新构造字符串;2.设置request编码格式 request.setCharacterEncoding("utf-8") 后,同时在tomcat的conf目录的server.xml中的Connector标签中添加 useBodyEncodingForURI="true" ;3.在刚才同样的Connector标签中添加 URIEncoding="utf-8" post请求中出现乱码。解决方式只有一种:设置request编码格式 request.setCharacterEncoding("utf-8") response响应编码。解决方式只有一种:设置response编码格式 response.setCharacterEncoding("gbk") 来源: CSDN 作者: Song X. 链接: https://blog.csdn.net/qq_22938671/article/details/104285943