为什么我们需要用python编码和解码?

为什么我们需要用python编码和解码?,python,python-3.x,decode,encode,Python,Python 3.x,Decode,Encode,编码/解码的用例是什么 我的理解是,encode用于将字符串转换为字节字符串,以便能够在程序中传递非ascii数据。解码就是把这个字节串转换成字符串 但是福勒。示例显示即使未编码/解码,也能成功打印非acsii字符。例如: val1="À È Ì Ò Ù Ỳ Ǹ Ẁ" val2 = val1 print('val1 is: ',val2) encoded_val1=val1.encode() print('encoded_val1 is: ',encoded_val1) decoded_en

编码/解码的用例是什么

我的理解是,encode用于将字符串转换为字节字符串,以便能够在程序中传递非ascii数据。解码就是把这个字节串转换成字符串

但是福勒。示例显示即使未编码/解码,也能成功打印非acsii字符。例如:

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中编码和解码的用例是什么呢?

除了终端(或用于查看输出的任何设备)可能支持显示这些字符之外,您正在使用的环境可能还支持这些字符。某些终端/命令行或文本编辑器可能不支持它们。除了显示问题外,以下是一些实际原因和示例:

1-当您通过internet/网络传输数据时(如使用套接字),信息将作为原始字节传输。非ascii字符不能用单个字节表示,因此我们需要对它们进行特殊表示(utf-16或具有多个字节的utf-8)。这是我遇到的最常见的原因

2-某些文本编辑器仅支持utf-8。例如,您需要用utf-8格式表示角色,以便使用它们。原因是在处理文本时,人们大多使用ASCII字符,而ASCII字符只有一个字节。当一些系统需要与非ascii字符集成时,人们将其转换为utf-8。一些对文本编辑器有更深入了解的人可能会对这一点给出更好的解释

3-您可能有一个使用unicode字符编写的文本,其中包含一些中文/俄文字母,并且出于某种原因将其存储在远程Linux服务器中。但您的服务器不支持来自这些语言的信件。您需要将文本转换为某种严格格式(utf-8或utf-16),并将其存储在服务器中,以便以后恢复


这里有一个小的解释。如果您感兴趣,还有其他关于该主题的文章。

您正在使用的环境可能支持这些字符,此外,您的终端(或用于查看输出的任何设备)可能支持显示这些字符。某些终端/命令行或文本编辑器可能不支持它们。除了显示问题外,以下是一些实际原因和示例:

1-当您通过internet/网络传输数据时(如使用套接字),信息将作为原始字节传输。非ascii字符不能用单个字节表示,因此我们需要对它们进行特殊表示(utf-16或具有多个字节的utf-8)。这是我遇到的最常见的原因

2-某些文本编辑器仅支持utf-8。例如,您需要用utf-8格式表示角色,以便使用它们。原因是在处理文本时,人们大多使用ASCII字符,而ASCII字符只有一个字节。当一些系统需要与非ascii字符集成时,人们将其转换为utf-8。一些对文本编辑器有更深入了解的人可能会对这一点给出更好的解释

3-您可能有一个使用unicode字符编写的文本,其中包含一些中文/俄文字母,并且出于某种原因将其存储在远程Linux服务器中。但您的服务器不支持来自这些语言的信件。您需要将文本转换为某种严格格式(utf-8或utf-16),并将其存储在服务器中,以便以后恢复


这里有一个小的解释。如果您感兴趣,还有其他关于该主题的文章。

使用utf-8编码,因为它是通用的。 将代码编辑器设置为utf-8编码,并放在所有python文件的顶部:
#编码:utf8
当你得到一个输入(文件,字符串…),它可以有一个不同的编码,然后你必须得到他的编码类型和解码。HTML文件中的示例编码类型在元应答器中。 如果您更改了HTML文件中的某些内容,并希望将其保存或通过网络发送,则必须使用之前的编码类型对其进行编码。

在python中,字符串始终使用unicode。(对于Python3是自动的,但是对于python2.7,使用前缀u,比如u'Hi')

$python2.7
Python 2.7.3(默认值,2012年8月1日,05:14:39)
[GCC 4.6.3]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>类型(“这是一个字符串”)#位=>编码
>>>类型(u'这是一个字符串')#unicode=>已解码
$python3
Python 3.2.3(默认值,2012年10月19日,20:10:41)
[GCC 4.6.3]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>键入(“这是一个字符串”)#unicode=>已解码
>>>键入(b“这是一个字符串”)#位=>编码


1使用UTF8。现在到处都是。

2在代码中,指定文件编码并将字符串声明为“unicode”。

3在入口处,了解数据的编码,并使用decode()进行解码。


4在输出时,由接收数据的系统按照预期编码进行编码,如果您不知道,则使用UTF8编码()。

使用utf-8编码,因为它是通用的。 将代码编辑器设置为utf-8编码,并放在所有python文件的顶部:
#编码:utf8
当你得到一个输入(文件,字符串…),它可以有一个不同的编码,然后你必须得到他的编码类型和解码。HTML文件中的示例编码类型在元应答器中。 如果您更改了HTML文件中的某些内容,并希望将其保存或通过网络发送,则必须使用之前的编码类型对其进行编码。

在python中,字符串始终使用unicode。(对于Python3是自动的,但是对于python2.7,使用前缀u,比如u'Hi')

$python2.7
Python 2.7.3(默认值,2012年8月1日,05:14:39)
[GCC 4.6.3]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>类型(“这是一个字符串”)#位=>编码
>>>类型(u'这是一个字符串')#unicode=>已解码
$python3
P
$ 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'>