python语言中print函数的有关知识,python语法print
通过例子更容易理解问题。
首先这里有一个我新建的txt文件,命名为ivan_utf8.txt,然后我在里面随便编辑了一些东西。
然后用控制台打开这个文件,也是截图:
这里简单来说就是打开文本,阅读文本内容,打印出来。我们从印刷品上看到的和我在上面写的是一样的东西。然后,我对这个内容使用解码(“gbk”),也就是说,使用GBK解码。这是什么意思?也就是说,我假设这个A是gbk模式编码的。结果如何呢?大家都看到了,而且是错的!这说明这不是gbk编码。是的,我的编码是UTF 8编码。当然,我必须报告一个错误。其实最主要的原因是这一张里面的中国人无法被识别。如果只是英文的,还是不会给出错误,虽然求解的内容不一样。
回到我们的问题,这个错误意味着什么?
这就是我们今天要讲的内容。看完我说的,就知道为什么了。
1.1.python字符串的本质是什么?
2.2.unicode的魔力在哪里?
3.Python 2如何处理unicode编码?
4.Python 3如何处理unicode编码?
1.python为什么用unicode编码?
主要包括:
1.处理非英语内容;
2.可以使用第三方库;
3.接受任何输入内容;
Python可以用于web应用程序和数据库之间的交互,也可以用于命令行脚本处理。
上面的错误示例是命令行脚本的一个示例。
众所周知,它实际上是一串字节流(1byte: bytes)。一个字节是8位二进制数,8位十进制是几千万。8位二进制系统称为一个字节。一个二进制位只能代表0或1。所以一个字节可以代表两种可能性的八次方。那太远了。
我们的字符串是用UTF 8编码的。编码方式是什么?也就是说010101010101这样一串.是按照什么规则转换成字符的,为什么显示成我们看到的样子?
UTF-8是规则之一。
unicode编码的每个字符占用两个字节,也就是16位!如果是其他编码,16位比特可能代表别的东西。
如今,python标准库已经支持100多种编码方法。
我们不需要打印,直接A就会看到原文内容: SDFS \ XE5 \ XAE \ XB6 \ XE9 \ X87 \ X8C \ X5 \ X8F \ X91 \ X7 \ X94 \ X9F \ X7 \ X9A \ X84 \ X7 \ XBA \
这是记忆中的表征,前面的英文可以显示,后面的因为是中文所以不能直接翻译,其他的也不行。这些都是十六进制,四个二进制只需要一个十六进制。
UTF-8是asciil编码的扩展。每个字符是一个字节。所以一个有2的8次方(2的平房是4,4次方是16,6次方是64,8次方是256),因为有256种可能。但是为什么标准教程说128?等我回去查资料再说这个吧。可能ascii库中只有128个字符,浪费了一半。
非英语不能用ascii编码,比如:d= Liao ,然后d.encode(d),会爆以下错误:
d . encode(“ascii”)
回溯(最近一次呼叫):
文件“”中的第1行
UnicodeDecodeError错误:“ascii”编解码器无法解码位置0处的字节0xe9:序号不在范围内(128)
在python中;类型关系如下:
-
—
对字符串a使用decode(encoding)得到unicode类型,当a是unicode类型时,a.encode(encoding)会得到str类型。
打印一份
sdfs家中的纠纷
镜头(a)
25
一个[-1]
\xb7
a_uni=a.decode(utf-8 )
阿uni
sdfs \ u5bb 6 \ u91cc \ u53d 1 \ u751f \ u7684 \ u7ea 0 \ u7eb 7
类型(a_uni)
len(大学)
11
a_uni[-1]
u\u7eb7
Unicode是:
不使用字节表示文本的表单;也就是说变长了,len就是数字。
汉语中的每个字符都由一个唯一的数字代表。
支持所有主流语言;
能代表一百万以上的符号;
如果ascii、UTF-8等字节串是文本,那么unicode就是文本,unicode是最严格的文本格式;Unicode是最严格的。这是单词的抽象格式。
Unicode是一个概念:
如果unicode被保存到硬盘,它必须被编码。
a=unicode(AB )
类型(a)
A.encode (UTF-8) #这是将编码转换成UTF-8编码。
AB
utf-8
是变量的多字节表示形式。
前128个字符就像ascii一样。(另外1个字节不能代表,需要更多字节,一个字符可能需要1-4个字节)
a=unicode(AB )
a . encode(“utf-16”)
\xff\xfeA\x00B\x00
utf-16
多字节表示。
2-4字节代表一个字符;
就是优化2个字节范围内的字符;
utf-32
固定宽度字符,最快
4字节32位代表一个字符;
Python不支持
将解码文本转换为unicode
大多数情况下是自动的。
这主要发生在第三个图书馆。
Python会为你解码。
将unicode编码的文本写入ascii编码的文件时,将会报告错误。
如果要写,可以先把字符a . encode(sys . getdefaultencoding())
python2的默认模式是ascii
可以使用:sys.set default encoding (UTF-8 )来设置python的编码方法。该设置此时有效。
但是设置会比较麻烦。
解码:
1.解码
2.unicode编码无处不在。
3.编码
转换为unicode:
def to_unicode_or_bust(obj,encoding=utf-8 ):
if isinstance(obj,basestring):
如果不是isinstance(obj,unicode):
obj=unicode(obj,编码)
返回对象
转换为字符串类型:
主要用于写入磁盘和实时打印时:
直接编码(编码)就行了。
打开文件指定编码方法,在第三个参数中:
f=打开( 1.txt , r ,编码=utf-8 )
content=f.read()
f.close()
这是UTF八号的解读。写作也是一个道理。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。