encoding_encoding和encode - CSDN
精华内容
参与话题
  • 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(一)

    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。。。。

    展开全文
  • Encoding

    2018-08-09 17:05:29
    Encoding Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 54147 Accepted Submission(s): 24065   Problem Description Given a string contain...

    Encoding

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 54147    Accepted Submission(s): 24065


     

    Problem Description

    Given a string containing only 'A' - 'Z', we could encode it using the following method: 

    1. Each sub-string containing k same characters should be encoded to "kX" where "X" is the only character in this sub-string.

    2. If the length of the sub-string is 1, '1' should be ignored.

     

     

    Input

    The first line contains an integer N (1 <= N <= 100) which indicates the number of test cases. The next N lines contain N strings. Each string consists of only 'A' - 'Z' and the length is less than 10000.

     

     

    Output

    For each test case, output the encoded string in a line.

     

     

    Sample Input

    
     

    2 ABC ABBCCC

     

     

    Sample Output

    
     

    ABC A2B3C

     

     

    Author

    ZHANG Zheng

     

     

    Recommend

    JGShining   |   We have carefully selected several similar problems for you:  1008 1004 1002 1019 1021 

     英语学的不好,sub-string是连续字符的意思,

    #include<iostream>
    #include<string.h>
    using namespace std;
    int main()
    {
        int n,i,j;
        string a;
        int b[27];
        scanf("%d",&n);
        while(n--)
        {
            memset(b,0,sizeof(b));
            cin>>a;
            j=0;
            for(i=0;i<a.size();i++)
            {
                j=1;
                while(a[i]==a[i+1])
                {
                    j++;
                    i++; 
                }
                if(j>1)
                printf("%d%c",j,a[i-1]);
                else
                printf("%c",a[i]) ;
            }
            
            cout<<endl;
        }
        return 0;
     } 

    展开全文
  • 中文encoding问题

    2018-12-09 18:30:36
    tensorflow包含中文存在的encoding问题 import tensorflow as tf a = tf.constant(3) b = tf.constant(4) with tf.Session() as sess:  print("相加: %d" % sess.run(a+b)) 如果.py文件中有相加这两个...
  • [转]谨慎使用Encoding.Default

    万次阅读 2017-03-22 14:53:56
    在处理文本时,经常需要处理Encoding的概念。存在这个问题的原因在于,在.NET程序内文本只是string和char对象,而保存到硬盘时,或者准备用socket把它发送出去时,都得先转换成byte[]或者字节流。而转换的算法,就是...
  • C# Encoding

    2019-03-07 18:39:24
    CLR中的Encoding是在System.Text命名空间下的,它是一个抽象类(abstract class), 所以不能被直接实例化,它主要有如下的派生类:ASCIIEnding,UnicodeEncoding,UTF32Encoding,UTF7Encoding,UTF8Encoding,你可以...
  • (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 ...
  • 关于Encoding

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

    千次阅读 2006-05-11 15:02:00
    表示字符编码。有关此类型所有成员的列表,请参阅 Encoding ...System.Object System.Text.Encoding System.Text.ASCIIEncoding System.Text.UnicodeEncoding System.Text.UTF7Encoding System.Text.UTF8Encoding
  • 随着对于python的编码的深入了解,后来才算搞懂,关于python的,用encoding去声明的文件编码,和,python文件实际的编码,之间的关系。 Python中用encoding声明的文件编码和文件的实际编码之间的关系 1.解释声明...
  • 我们在日常进行HTTP请求的时候,会遇到请求头或者响应头中有Transfer-Encoding、Content-Length、Content-Encoding、Accept-Encoding这几个,难免会不知道各自的含义及使用场景,也可能会搞混,我们今天就简单的捋...
  • HTTP Transfer-Encoding介绍

    千次阅读 2019-05-08 15:55:56
    Transfer-Encoding Transfer-Encoding,是一个 HTTP 头部字段,字面意思是「传输编码」。实际上,HTTP 协议中还有另外一个头部与编码有关:Content-Encoding(内容编码)。Content-Encoding 通常用于...
  • HTTP 1.1中有两个实体头(Entity-Header)直接... 先说Content-Encoding, 该头表示实体已经采用了的编码方式.Content-Encoding是请求URL对应实体(Entity)本身的一部分.比如请求URL为 http://host/image.png.gz时,可能会
  • 生命不止,继续go go go !!!json json大家都不陌生: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript 规范的一个子集,采用完全独立于编程语言的文本格式来存储和...
  • mean encoding是一种对类别特征编码的方式,假如target value是0和1,训练集中有5行数据的类别是A,对应的target value是[0,1,1,0,0],target均值是0.4,那就给A编码为0.4,这是一种其中mean encoding方式 ...
  • Target Encoding

    千次阅读 2018-09-28 16:40:57
    Target Encoding 二分类问题: 记号:   Target&nbsp;Y∈{0,1},Categorical&nbsp;feature&nbsp;XiTarget\text{ }Y\in\{0,1\}, Categorical \text{ }feature\text{ }X_iTarget&nbsp;Y∈{0,1},...
  • C#中Encoding.Unicode与Encoding.UTF8的区别

    千次阅读 2015-11-13 17:37:41
    今天在园子首页看到一篇博文-简单聊下Unicode和UTF-8,从中知道了UTF-8是Unicode的一种实现方式:Unicode只是给这世界上每个字符规定了一个统一的二进制编号,并没有规定程序该如何去存储和解析。...
1 2 3 4 5 ... 20
收藏数 1,663,144
精华内容 665,257
关键字:

encoding