为什么我们需要在python中编码和解码?
Why do we need to encode and decode in python?
encode/decode 的用例是什么?
我的理解是编码用于将字符串转换为字节字符串,以便能够在程序中传递非 ascii 数据。而解码就是将这个字节串转回字符串。
但是跟随。示例显示非 acsii 字符即使不是 encoded/decoded 也能成功打印。示例:
val1="À È Ì Ò Ù Ỳ Ǹ Ẁ"
val2 = val1
print('val1 is: ',val2)
encoded_val1=val1.encode()
print('encoded_val1 is: ',encoded_val1)
decoded_encoded_val1=encoded_val1.decode()
print('decoded_encoded_val1 is: ',decoded_encoded_val1)
输出:
那么python中编码和解码的用例是什么?
除了您的终端(或您用来查看输出的任何设备)可能支持显示这些字符之外,您正在使用的环境可能支持这些字符。某些 terminals/command 行或文本编辑器可能不支持它们。除了显示问题外,这里还有一些实际原因和示例:
1- 当您通过 internet/network 传输数据时(例如使用套接字),信息以原始字节的形式传输。非 ascii 字符不能用单个字节表示,因此我们需要对它们进行特殊表示(utf-16 或 utf-8,多于一个字节)。这是我遇到的最常见的原因。
2- 一些文本编辑器只支持 utf-8。例如,您需要以 utf-8 格式表示 Ẁ 字符才能使用它们。原因是在处理文本时,人们大多使用 ASCII 字符,它只有一个字节。当一些系统需要与非 ascii 字符集成时,人们将它们转换为 utf-8。一些对文本编辑器有更深入了解的人可能会对这一点给出更好的解释。
3- 你可能有一个用 unicode 字符写的文本,其中有一些 Chinese/Russian 个字母,出于某种原因将它存储在你的远程 Linux 服务器中。但是您的服务器不支持这些语言的字母。您需要将您的文本转换为某种严格的格式(utf-8 或 utf-16)并将其存储在您的服务器中以便稍后恢复它们。
这里稍微解释一下UTF-8 format。如果您有兴趣,还有关于该主题的其他文章。
使用 utf-8 编码,因为它是通用的。
将您的代码编辑器设置为 utf-8 编码并放在所有 python 文件的顶部:
# coding: utf8
当你得到一个输入(文件,字符串......)时,它可以有不同的编码然后你必须得到他的编码类型并解码它。 HTML 文件中的示例编码类型为元应答器。
如果您在 HTML 文件中更改了某些内容并希望将其保存或通过网络发送,那么您必须将其编码为之前的编码类型。
始终对 python 中的字符串使用 unicode。 (对于 python 3 自动,但对于 python2.7 使用前缀 u like u'Hi')
$ python2.7
Python 2.7.3 (default, Aug 1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> type('this is a string') # bits => encoded
<type 'str'>
>>> type(u'this is a string') # unicode => decoded
<type 'unicode'>
$ python3
Python 3.2.3 (default, Oct 19 2012, 20:10:41)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> type("this is a string") # unicode => decoded
<class 'str'>
>>> type(b"this is a string") # bits => encoded
<class 'bytes'>
1 使用 UTF8。现在。都结束了。
2 在您的代码中,指定文件编码并将您的字符串声明为 "unicode".
3 在入口处,知道你数据的编码,用decode()解码。
4 在输出端,使用接收数据的系统的预期编码进行编码,或者如果您不知道它,使用 encode () 在 UTF8 中进行编码。
encode/decode 的用例是什么?
我的理解是编码用于将字符串转换为字节字符串,以便能够在程序中传递非 ascii 数据。而解码就是将这个字节串转回字符串。
但是跟随。示例显示非 acsii 字符即使不是 encoded/decoded 也能成功打印。示例:
val1="À È Ì Ò Ù Ỳ Ǹ Ẁ"
val2 = val1
print('val1 is: ',val2)
encoded_val1=val1.encode()
print('encoded_val1 is: ',encoded_val1)
decoded_encoded_val1=encoded_val1.decode()
print('decoded_encoded_val1 is: ',decoded_encoded_val1)
输出:
那么python中编码和解码的用例是什么?
除了您的终端(或您用来查看输出的任何设备)可能支持显示这些字符之外,您正在使用的环境可能支持这些字符。某些 terminals/command 行或文本编辑器可能不支持它们。除了显示问题外,这里还有一些实际原因和示例:
1- 当您通过 internet/network 传输数据时(例如使用套接字),信息以原始字节的形式传输。非 ascii 字符不能用单个字节表示,因此我们需要对它们进行特殊表示(utf-16 或 utf-8,多于一个字节)。这是我遇到的最常见的原因。
2- 一些文本编辑器只支持 utf-8。例如,您需要以 utf-8 格式表示 Ẁ 字符才能使用它们。原因是在处理文本时,人们大多使用 ASCII 字符,它只有一个字节。当一些系统需要与非 ascii 字符集成时,人们将它们转换为 utf-8。一些对文本编辑器有更深入了解的人可能会对这一点给出更好的解释。
3- 你可能有一个用 unicode 字符写的文本,其中有一些 Chinese/Russian 个字母,出于某种原因将它存储在你的远程 Linux 服务器中。但是您的服务器不支持这些语言的字母。您需要将您的文本转换为某种严格的格式(utf-8 或 utf-16)并将其存储在您的服务器中以便稍后恢复它们。
这里稍微解释一下UTF-8 format。如果您有兴趣,还有关于该主题的其他文章。
使用 utf-8 编码,因为它是通用的。
将您的代码编辑器设置为 utf-8 编码并放在所有 python 文件的顶部:
# coding: utf8
当你得到一个输入(文件,字符串......)时,它可以有不同的编码然后你必须得到他的编码类型并解码它。 HTML 文件中的示例编码类型为元应答器。
如果您在 HTML 文件中更改了某些内容并希望将其保存或通过网络发送,那么您必须将其编码为之前的编码类型。
始终对 python 中的字符串使用 unicode。 (对于 python 3 自动,但对于 python2.7 使用前缀 u like u'Hi')
$ python2.7
Python 2.7.3 (default, Aug 1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> type('this is a string') # bits => encoded
<type 'str'>
>>> type(u'this is a string') # unicode => decoded
<type 'unicode'>
$ python3
Python 3.2.3 (default, Oct 19 2012, 20:10:41)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> type("this is a string") # unicode => decoded
<class 'str'>
>>> type(b"this is a string") # bits => encoded
<class 'bytes'>
1 使用 UTF8。现在。都结束了。
2 在您的代码中,指定文件编码并将您的字符串声明为 "unicode".
3 在入口处,知道你数据的编码,用decode()解码。
4 在输出端,使用接收数据的系统的预期编码进行编码,或者如果您不知道它,使用 encode () 在 UTF8 中进行编码。