精华内容
参与话题
问答
  • Python之encoding

    万次阅读 2018-05-10 18:11:30
    encoding Unicode utf-8 utf-16 utf-32 gbk ASCII 码 decoding 例子 encoding 根据Python官方文档中有关字符串的部分1: str.encode(encoding=”utf-8”, errors=”strict”) Return an encoded ...

    encoding

    根据Python官方文档中有关字符串的部分1

    str.encode(encoding=”utf-8”, errors=”strict”)
    Return an encoded version of the string as a bytes object. Default encoding is ‘utf-8’. errors may be given to set a different error handling scheme. The default for errors is ‘strict’, meaning that encoding errors raise a UnicodeError. Other possible values are ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ and any other name registered via codecs.register_error(), see section Error Handlers. For a list of possible encodings, see section Standard Encodings.

    encoding是编码的意思,在python中,Unicode类型是作为编码的基础类型。

    Unicode

    Unicode是一种标准,包括了字符集、编码方案等。因为ASCII码只能编码英文字符,具有很大的局限性,而Unicode 为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求2。在https://unicode-table.com/en/可以查到所有的Unicode字符。

    utf-8

    UTF-8以字节为单位对Unicode进行编码。

    utf-16

    UTF-16编码以16位无符号整数为单位。

    utf-32

    UTF-32编码以32位无符号整数为单位。

    gbk

    GBK全称《汉字内码扩展规范》(GBK即“国标”、“扩展”汉语拼音的第一个字母,英文名称:Chinese Internal Code Specification)3。GBK是采用单双字节变长编码,英文使用单字节编码,完全兼容ASCII字符编码,中文部分采用双字节编码。

    ASCII 码

    ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符4

    decoding

    根据Python官方文档中有关字符串的部分1

    bytes.decode(encoding=”utf-8”, errors=”strict”)
    bytearray.decode(encoding=”utf-8”, errors=”strict”)
    Return a string decoded from the given bytes. Default encoding is ‘utf-8’. errors may be given to set a different error handling scheme. The default for errors is ‘strict’, meaning that encoding errors raise a UnicodeError. Other possible values are ‘ignore’, ‘replace’ and any other name registered via codecs.register_error(), see section Error Handlers. For a list of possible encodings, see section Standard Encodings.
    Note Passing the encoding argument to str allows decoding any bytes-like object directly, without needing to make a temporary bytes or bytearray object.

    decode()就是将“字节流”按照某种规则转换成“文本”,可以理解为是encode()的逆过程。

    例子

    现在用一个小小的例子来体验一下编码和解码。
    首先可以去https://learnpythonthehardway.org/python3/languages.txt上将上面的字符保存在一个txt文件中,并以utf-8的形式保存,命名为languages。写下代码:

    #####encoding&decoding#####
    def main(file,encoding,errors):
        line = file.readline()
        if line:
            print_file(line,encoding,errors)
            return main(file,encoding,errors)
    
    def print_file(line,encoding,errors):
        next_lang = line.strip() ###strip() 方法用于移除字符串头尾指定的字符(默认为空格)
        raw_bytes = next_lang.encode(encoding, errors=errors) ###encode()函数中errors默认为strict,还可以设置为ignore,replace等
        cooked_string = raw_bytes.decode(encoding, errors=errors) ###decode()函数为解码
    
        print(raw_bytes, "<===>", cooked_string)
    
    
    languages = open("languages.txt", encoding="utf-8")
    main(languages,"utf-16","strict")
    

    可以得到结果(如下只显示结果片段):
    这里写图片描述
    左边为utf-8编码结果,右边为原字符,两者一一对应且可以进行互逆运算。
    将代码中的“utf-8”改成“utf-16”,可以得到以下结果:
    这里写图片描述

    展开全文
  • Encoding编码

    千次阅读 2018-02-09 18:33:21
    编码编码或者连续化处理是把分类变量转...二进制编码(Binary Encoding)通过用0或者1来表示每个类别不存在或者存在是分类变量量化的一个方法。如果分类变量有k个分类,那么我们需要创建k个二进制变量(理论上来说,...

    编码

    • 编码或者连续化处理是把分类变量转火车数值副本的过程。譬如,处理性别时,男的定为1,女的定为0.分类变量在许多模型方法中(譬如,线性回归,SVM,神经网络)必须进行编码。两种主要的编码类型是二进制编码和基于目标的编码。

    二进制编码(Binary Encoding)

    • 通过用0或者1来表示每个类别不存在或者存在是分类变量量化的一个方法。如果分类变量有k个分类,那么我们需要创建k个二进制变量(理论上来说,k-1个就已经足够了)。在下面的例子中,带3个值得分类变量“Trend”转换成3个分离的二进制数值变量。这中方法最大的缺点是当分类变量有很多个值得时候,数据的维度会大大增加。

    基于目标的编码(Target-based Encoding)

    • 基于目标的编码是通过目标来对分类变量量化。在这个方法中,我们把一个分类变量替换成一个数值变量,然后再计算该分类变量出现的目标概率(如果是分类的)或者平均值(如果是数值的)。这个方法的最大缺点是它比较依赖目标的分布,而且和二进制方法相比,它的预测能力比较低。
    • 例1
    • 用基于目标的编码处理分类目标。

    • 例2

    • 用基于目标的编码处理数值目标。

    展开全文
  • Encoding

    千次阅读 2018-08-06 17:23:32
    转载自 https://www.cnblogs.com/criedshy/archive/2012/08/07/2625358.html C# 小叙 Encoding (一) ASCII编码 使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。 UTF-8 可变长度字符编码,...

     

     

    转载自 https://www.cnblogs.com/criedshy/archive/2012/08/07/2625358.html C# 小叙 Encoding (一)

    ASCII编码 使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。

    UTF-8       可变长度字符编码,如果要表示的情况不够时,就会增加字节数。如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的字节数,其余各字节均以10开头。如果只有一个字节则其最高二进制位为0;

    UTF-16     每个字符编码成2个字节,它不会对字符产生任何影响,也不会涉及到压缩处理,性能非常好,

    UTF-32     使用4个字节编码成一个字符。

     

    print(System.Text.Encoding.UTF8.GetBytes("1").Length);//打印 1
    print(System.Text.Encoding.UTF8.GetBytes("hao").Length);//打印 3
    print(System.Text.Encoding.UTF8.GetBytes("好人").Length);//打印 6
    print(System.Text.Encoding.Default.BodyName);//打印 gb2312

    展开全文
  • Encoding(一)

    2017-04-24 12:29:42
    前言  众所周知计算机只能识别二进制数字,如1010,1001。我们屏幕所看到的文字,字符都是和二进制转换后的结果。将我们的文字按照某种规则转换二进制存储在计算机上,这一个过程叫字符编码,反之就是解码。...

    装载自:http://www.cnblogs.com/criedshy/archive/2012/08/07/2625358.html

    前言

        众所周知计算机只能识别二进制数字,如1010,1001。我们屏幕所看到的文字,字符都是和二进制转换后的结果。将我们的文字按照某种规则转换二进制存储在计算机上,这一个过程叫字符编码,反之就是解码。目前存在多种字符编码方式,一组二进制数字根据不同的解码方式,会得到不同的结果,有时甚至会得到乱码。这也就是为什么我们打开网页时有时会是乱码,打开一个文本文件有时也是乱码,而换了一种编码就恢复正常了。CLR中的所有字符都是16位Unicode来表示的。CLR中的Encoding就是用于字节和字符之间的转换的。更多字符编码知识请参考,字符集和字符编码(Charset & Encoding)

    关于Encoding

        CLR中的Encoding是在System.Text命名空间下的,它是一个抽象类(abstract class),  所以不能被直接实例化,它主要有如下的派生类:ASCIIEnding,UnicodeEncoding,UTF32Encoding,UTF7Encoding,UTF8Encoding,你可以根据需要选择一个合适的Encoding来进行编码和解码。你也可以调用Encoding的静态属性ASCII,Unicode,UTF32,UTF7,UTF8,来构造一个Encoding。其中Unicode是表示16位Encoding。调用静态属性和实例化一个子类的效果是一样的,如下代码。

    1 Encoding encodingUTF8 = Encoding.UTF8;
    2 Encoding encodingUTF8 = new UTF8Encoding(true);

        以下是这些类型的一些简单描述:

        ASCII编码  将16位字符编码成ASCII码,只能转换值小于Ox0080的16字符,并且被转换成单字节,就是说一个字符对应一个字节。当字符都在ASCII范围(0X00~0X7F)内时,可以用这种编码,它的速度非常快,适合于英美地区的字符。这种编码非常有限,汉字会被转换成乱码。在CLR对应ASCIIEndoing。

        UTF-16     每个字符编码成2个字节,它不会对字符产生任何影响,也不会涉及到压缩处理,性能非常好,因为CLR中的字符也是16位的Unicode。在CLR中对应UnicodeEncoding。

        UTF-32     使用4个字节编码成一个字符。从内存角度上讲,它并不是一种高效能的编码方案,因为第个字符都是4个字节,特别占内存,所以很少用来做文件和网络流的编码解码。在CLR中对应UTF32Encoding。

        UTF-8      值在Ox0080之下的字符压缩成一个字符,也就是ASCII码;值在0X0080---0X07FF之间的字符都转换成2个字符,适合用于欧洲和中东地区。0X0800以上被转换成3个字符,适合于东亚地区的字符。代理项被转换成4个字节。因此,它是一种非常流行的编码,适用于互联网。它在处理0X0800以上的字符效率不好UTF-16。在CLR中对应UTF8Encoding。

        UTF-7     这咱编码通常用于旧的系统,那时的系统是用7位值表示。目前已经被Unicode协淘汰。在CLR中对应UTF7Encoding。

       从性能角度上来讲,如果你的代码需要在多处调用一个Encoding,微软建议你使用静态成员的方式构造一个Encoding对象,而不是构造实例。它的内部实现是一个单例模式。

    复制代码
    public static Encoding UTF8
    {
        get
        {
            if (utf8Encoding == null)
            {
                utf8Encoding = new UTF8Encoding(true);
            }
            return utf8Encoding;
        }
    }
    复制代码

         如果你知道某种编码的代码页(code page)或名字,那么你可以调用Encoding的静态方法GetEncoding(int codepage),GetEncoding(string name)来构造一个Encoding,比如我们常用的用于显示简体中文的gb2312,它的代码页是936,我们就可以这样定义:

    Encoding encodingGB2312=Encoding.GetEncoding("gb2312");
    Encoding encodingGB2312=Encoding.GetEncoding(936);

        目前有几十种文字代码页,分别对应于不同的国家,不同的语言,它们只是对应Unicode字符集里的相一部分,比如说936,它只是对应于Unicode字符集里简体中文的那一部分,如果你想正确的显示繁体字,那么就要用中文繁体对应的代码页950。具体的代码页有哪些可以参考MSDN或园子里这篇文章,C#文字代码页,文字编码的代码页名称速查表

       下面代码可以返回CLR中所有的Encoding。

                foreach (EncodingInfo eInfo in Encoding.GetEncodings())
                {
                    Console.WriteLine("Encoding code page is {0}, encoding name is {1}", eInfo.CodePage, eInfo.Name);
                    Console.WriteLine("Encoding dispaly name is {0}", eInfo.DisplayName);
                }

     

       Encoding对象有一个静态属性Default,它返回的也是一个Encoding对象,至于返回哪个语言的Encoding取决于你电脑里-->控制面板->区域和语言 里面的设置,也就是ANSI。如下图,我电脑里设置是Chinses(Simplified, PRC)也就是简体中文,那么对应的就是gb2312,所以下面代码会打印gb2312。如果你的代码在不止一个国家里使用,那么你最好不要Encoding.Default,这样会造成乱码,你最好用Encoding.UTF8。

    Encoding encoding1 = Encoding.Default;
    Console.WriteLine(encoding1.WebName);

     待续。。。

    下一节将讲如何使用Encoding,BOM,还有Encoder及Decoder。。。。

    展开全文
  • 本文节选自洪流学堂公众号技术专栏《大话Unity2018》,未经允许不可转载。 ... ... 洪流学堂,让你快人几步。...大智:“昨天我们了解了编码的基本知识,要佩服并感谢一下ISO和Unicode联盟,做了这么伟大的事情将全世界...
  • HTTP协议中的Content-Encoding

    千次阅读 2018-10-31 15:21:32
     1.Content-Encoding是什么  2.内容编码格式gzip和deflate Content-Encoding是什么 Accept-Encoding和Content-Encoding是HTTP中用来对采用哪种编码格式传输正文进行协定的一对头部字段。 工作原理如下:  1....
  • (2)encoding 是 charset encoding 的简写,即字符集编码,简称编码。、 与接口及接口实现的对比 从这里可以很清楚地看到, 一、编码是依赖于字符集的,就像代码中的接口实现依赖于接口一样; 二、一个字符集...
  • 根据多次在ie6、ie7上测试发现用Encoding.Default的基本可以解决95%的乱码输出的问题,虽然网上有帖子说“谨慎使用Encoding.Default”,原帖见备注一。 但是另外的5%的乱码需要Encoding.GetEncoding("utf...
  • 首先贴几个MSDN上的方法: //编码的一些方法 //1、获取Encoder的实例: Encoder code1 = Encoding.ASCII.GetEncoder();// ASCII的编码实例 Encoder code2 = Encoding.Unicode.GetEncoder();// Unicode ...
  • EncodingUTF-8编码规则

    万次阅读 2017-10-23 15:32:50
    UTF-8是一种变长字节编码方式。对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头。...
  • 试了以下网上的各种说法,什么,chcp65001 chcp 936等等,都没有用 因为dos下是没有utf8编码的 改死了也没用 只有在编译的时候使用 javac encoding utf-8 test.java
  • 关于encoding utf-8

    2013-04-04 20:55:52
    一 gem解决方案 [url]https://github.com/m-ryan/magic_encoding[/url] 二,rake task 解决方案 ...Manage the encoding header of Ruby files" task :check_encoding_headers => :environment do f...
  • xshell源码编译时,报错:unmappable character (0xC5) for encoding UTF-8 在xshell中更改编码格式为默认 utf-8都不行 解决办法:将该文件用UltraEdit打开,另存为,格式选择:utf-8 - 无BOM,即可 参考:...
  • unmappable character for encoding UTF-8

    千次阅读 2017-04-21 17:00:07
    Encoding” is one of the most headache problem in a webapp. It alway goes with these kinds of files: java, javascript. And the cause is widely related to our system encoding, file encoding, idea ...
  • 移植代码时,编译时发现错误,主要是由于编码格式错误导致,可以用vim打开文件,查看文件编码格式转换cheng,具体命令如下: 查看现在文本的编码: ...set fenc=utf-8 :set enc=编码 以指定的编码显示文本
  • unmappable character for encoding utf-8

    千次阅读 2017-01-22 11:32:04
    unmappable character for encoding utf-8: 在Tomcat-5.5.26\bin\catalina.bat文件的 set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging....
  • 如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会...# -*- coding:utf-8 -*-  问题就来了,为什么要如此声明? 首先请参考python的PEP http://www.python.org/de
  • #encoding: utf-8 reload(sys) sys.setdefaultencoding("utf-8") 下面解释下这2个编码设置的作用 1. encoding: utf-8 #默认编码方式 2. sys.setdefaultencoding(“utf-8”) #默认解码方式 规则1 print 后面如果是...
  • Java -Dfile.encoding=UTF-8的使用

    万次阅读 2015-01-05 16:22:04
    原文地址:... Java -Dfile.encoding=UTF-8 遭遇乱码问题的来龙去脉 ...如下使用:java -XX:MaxPermSize=256M -Dfile.encoding=UTF-8 -Xbootclasspath/a:./acc/library/fc
  • 程序代码由于其他原因必须在JVM启动参数上加上 -Dfile.encoding=UTF-8,强行设置系统文件编码格式为utf-8.但是这样又出现了一个问题,eclipse控制台 所有中文乱码,包括启动的时候.搞了好几天,在网上也搜索了很多解决...
  • java 乱码问题-Dfile.encoding=UTF-8

    千次阅读 2018-06-26 10:40:54
    windows环境编码GBK、Linux环境下没有出现异常时默认编码是utf8、异常时虽然 系统环境显示utf-8,但是因为安装了一些涉及系统环境的包之后,对编码为utf-8有些 许怀疑程序中转换的最终编码utf-8怀疑对象是程序运行...
  • [javac] /opt/*.java:12: unmappable character for encoding UTF-8 [javac] * 锟矫碉拷锟斤拷庭医锟斤拷id [javac] ^ [javac] 13 errors 解决办法:找到对应的java文件,使用UTF-8 再...
  • Adding the following to build.gradle solves the problem : android {... compileOptions.encoding ='UTF-8'
  • Java -Dfile.encoding=UTF-8 的使用

    千次阅读 2020-01-13 14:27:08
    Java -Dfile.encoding=UTF-8 遭遇乱码问题的来龙去脉 如下使用:java -XX:MaxPermSize=256M -Dfile.encoding=UTF-8 -Xbootclasspath/a:./acc/library/fc -jar fats.jar 这两天写了一个 Java 程序来玩,结果又遭遇了...
  • 今天导入一个工程的时候出现了编码错误,提示utf-8的错误,我看了下,此时studio的编码为GBK,于是改为GB2312就可以了。。。。
  • eclipse 默认UTF-8 -Dfile.encoding=UTF-8

    千次阅读 2016-02-23 10:51:21
    问题描述: 程序涉及到国际化问题,httpclient抓回来的数据乱七八糟的乱码,在转了几次编码之后在Myeclipse下可以获取正常编码的源码(准确的说是能显示一大部分,少部分内容依然乱码),但是将程序移植到eclipse下...
  • # encoding: utf-8

    2012-03-30 09:24:19
    a ruby1.9+rails3在helper方法中写中文时,出现invalid multibyte char (US-ASCII)异常了,查了下,原来ruby1.9是用ASCII编码来读源码的...# encoding: utf-8 a a a
  • Java -Dfile.encoding=UTF-8 遭遇乱码

    千次阅读 2015-04-24 09:15:20
    Java -Dfile.encoding=UTF-8 遭遇乱码问题的来龙去脉 这两天写了一个 Java 程序来玩,结果又遭遇了以前遇到过很多次的乱码问题,具体描述一下: 在 Mac 系统里面,常用的 Java 程序启动方式有如下几种: 1.通过 ...
  • 1.在处理一批txt数据的时候,遇到问题:使用with open()的方法打开文件并进行readlines()的操作的时候会报错(因为歌词文本包含中英文日语还有一些其他符号),因为有的文件要使用encoding=‘utf-8’,有的文件要使用...
  • unsupported content encoding "utf-8"错误

    千次阅读 2019-06-20 16:46:45
    写了一个Java项目接收请求然后转发到node写的moke项目请求 搜索了一下发现如果是直接浏览器请求就没问题,Java请求就回发生编码识别问题 解决方法,在node写的这个项目中的node_modules/body-parser/lib/read.js...

空空如也

1 2 3 4 5 ... 20
收藏数 1,697,239
精华内容 678,895
关键字:

encoding