Python编码问题:理解并解决字符串编码转换
首先,将您添加在弦的前面,例如U'Hello World Hello! '

中文编码的问题是使用中国程序员的问题,而在Python下也是如此。那么,我们应该如何理解和解决Python编码问题?
我们需要知道,Unicode编码是在Python内部使用的,但是外部是面对各种奇怪的代码,例如GBK,GB2312,UTF8等,这些代码通常被视为中国程序。路口
首先,让我们看一下在源代码文件中使用字符串的情况。作为文本文件,源代码文件必须以某些编码形式存储。 Python默认源代码文件是ASCI编码。例如,代码中有一个变量:
S1 ='a'
打印S1
Python认为这个“ A”是ASCI编码的角色。仅使用英语字符是正常的,但是如果您使用中文,例如:
s1 ='ha'
打印S1
该代码文件在执行时会出错,这是编码的问题。 Python默认为ASCI编码为代码文件,但是ASCI编码中没有中文,因此异常。
解决问题的问题是让Python知道文件中使用了哪些编码表格。对于中文,可以使用的常见代码是UTF-8,GBK和GB2312。只需在代码文件的最前沿添加:
# - * - 编码:UTF-8 - * -
这是为了在我的文件中的Python中通知文本,在UTF-8中编码。这样,Python将以UTF-8的形式解释字符,然后将其转换为Unicode编码的内部处理。
但是,如果您在Windows控制台下运行此代码,尽管该程序已执行,但它不是屏幕上打印的前线。这是由Python编码和控制台编码的不一致引起的。使用Windows下的控制台的编码
它是GBK,代码中使用的UTF-8。 Python自然会与GBK编码的GBK的控制台不一致。
解决方案是将源代码的代码更改为GBK,也就是说,代码的第一行更改为:
# - * - 编码:GBK - * -
另一种方法是将源文件的UTF-8保持不变,但在“ HA”的前面添加一个U角色,也就是说:
s1 = u'ha'
打印S1
这样,您可以正确打印“ ha”一词。
这里的u表示后续字符串以Unicode格式存储。 Python将在代码第一行的UTF-8编码中识别汉字“ HA”,然后将其转换为Unicode对象。如果我们使用类型检查“ HAHA”数据类
将获得类型('ha')的类型('ha'),并将获得类型(u'ha'),也就是说,在字符面前添加u表示这是一个Unicode对象。这个词将以内存格式存在于内存中。如果你不加你
它表明这只是使用特定编码的字符串。编码格式取决于将Python识别到源文件编码的识别。这是UTF-8。
当Python将Unicode对象输出到控制台时,它将根据输出环境的编码自动转换,但是如果输出不是Unicode对象,而是普通字符串,则输出字符串将直接根据字符串的编码进行。 ,以便上面的礼物出现在上面的当下。
大象。
除了使用Unicode对象外,除了使用U标记外,还可以使用Unicode类和String的编码和解码方法。
Unicode类的构造函数接受字符串参数和编码参数,并将字符串封装到Unicode中。例如,在这里,由于我们使用UTF-8编码,因此UNICODE中的编码参数'utf-8'将字符包装
Unicode对象,然后正确输出到控制台:
s1 = unicode('ha“”,'utf-8')
打印S1
此外,解码功能还可以将普通字符串转换为Unicode对象。许多人不了解python字符串的解码和编码功能的含义。在这里简要解释。
解码是根据参数中的编码格式分析普通字符串,然后生成相应的Unicode对象。例如,在这里我们使用UTF-8,因此将字符串转换为Unicode的形式是以下形式:
s2 ='ha'.decode('utf-8')
目前,S2是一个存储“ HA”一词的Unicode对象,实际上与Unicode('Ha's,'utf-8')和U'Ha相同。
然后编码只是相反的函数。这是一个常见字符,将Unicode对象转换为参数编码格式,例如以下代码:
s3 = unicode('ha“”,'utf-8')。encode('utf-8')
S3现在已更改为UTF-8的“ HA”。
2。在字符串的前面加R,例如r'hello \ n \ $%\ n*'
3。在字符串之前添加b,例如b'\ x0a',b'Little Apple',b'aaa0001'
提示是错误的,并且提示B'xiao Apple'不是ASCII代码,它必须是十六进制器或ASCII字符的数量。然后将其修改为任何英语字符xiaopingguo111
但是我们看到了第一个b'\ x0a'输出的内容\ n,也就是说,他\ x0a翻译成ASCII代码,恰好是更改符号\ n