如何开发网站,可直接打开网站的网页,wordpress 网页目录下,沈阳做平板网站python中编码与解码简记 一、读取文本文件指定的编码方式二、字符串与字节格式互转三、Base64编码解码3.1Base64 编解码使用的参数类型3.2Base64 编码后的字符串显示3.3Base64 解码后的字符串显示 四、Quoted-Printable编码解码4.1Quoted-Printable编解码使用的参数类型4.2Quot… python中编码与解码简记 一、读取文本文件指定的编码方式二、字符串与字节格式互转三、Base64编码解码3.1Base64 编解码使用的参数类型3.2Base64 编码后的字符串显示3.3Base64 解码后的字符串显示 四、Quoted-Printable编码解码4.1Quoted-Printable编解码使用的参数类型4.2Quoted-Printable编码后的字符串显示4.3Quoted-Printable解码后的字符串显示 参考文档 一、读取文本文件指定的编码方式
示例代码如下
# 读取输入文件内容
with open(input_file_path, r, encodingutf-8) as input_file:input_data input_file.read()在 Python 中open 函数的 encoding 参数用于指定打开文件时使用的字符编码方式如果指定的编码方式与文件本身的编码方式不匹配可能会导致读取错误或乱码问题。
文件本身的编码方式取决于操作系统和使用的文本编辑器可以使用支持显示文件编码的编辑器如 Notepad打开文件查看编码信息。
各操作系统和文本编辑器默认编码如下
Windows 10 之前的版本——记事本默认编码是 ANSI这通常是指当前系统区域设置的代码页例如 GBK简体中文区域设置或 Windows-1252英语区域设置。Windows 10及之后的版本——记事本默认使用UTF-8编码。Visual Studio Code、Notepad编辑器默认使用 UTF-8 编码但这可以根据用户配置进行更改。Linux 和 macOS 系统上默认的文本文件编码通常是 UTF-8。
在现代操作系统中UTF-8 已经成为默认和推荐的文本编码标准使用 encoding‘utf-8’ 可以最大程度上确保 Python 正确读取文件内容。 如果不指定 encoding 参数Python 将使用系统默认的编码方式。 例如
Windows 系统的默认编码通常是 cp1252 或 gbk。Linux 和 macOS 系统的默认编码通常是 utf-8。
UTF-8 是一种常见的字符编码方式主要特点为
广泛支持UTF-8 是一种通用的字符编码方式在多种系统和平台上都得到广泛支持。能够表示多种字符UTF-8 可以表示几乎所有的 Unicode 字符包括 ASCII 字符和其他国际字符。兼容性使用 UTF-8 编码可以确保文件或数据在不同系统和应用程序之间的兼容性。标准化UTF-8 已经成为事实上的标准许多软件和协议都默认使用 UTF-8 编码。
二、字符串与字节格式互转
示例代码如下
# 将输入字符串编码为字节数据
input_bytes input_str.encode(utf-8)
# 将字节数据解码为字符串
input_str input_bytes.decode(utf-8).encode(‘utf-8’)这是字符串对象的方法用于将字符串按照指定的编码方式进行编码。在这里编码方式是 UTF-8指定 UTF-8 编码是一种通用的做法。
字符串编码为字节数据时如果包含非 ASCII 字符可以使用 UTF-8 或GBK编码方式。字符串编码为字节数据时如果仅包含 ASCII 字符编码方式可以任选可以使用 ASCII 编码也可以使用 UTF-8 或GBK编码但UTF-8 或GBK编码的结果与ASCII 编码的结果一致。字节数据解码为字符串使用的解码方式要与编码时选择的编码方式一致但如果编码使用的是ASCII解码方式可以任选并不影响结果。
三、Base64编码解码
Base64编码是一种将二进制数据转换为ASCII字符的编码方式,它起源于1960年代的美国军方通信系统,如今已成为网络通信领域的标准编码方法。 Base64编码解码示例代码如下
import base64# 要编码的二进制数据
binary_data bHello, World!# 进行 Base64 编码
encoded_data base64.b64encode(binary_data)# 将编码后的数据转换为字符串
encoded_string encoded_data.decode(utf-8)print(Base64 编码结果:, encoded_string)# 要解码的 Base64 编码字符串
encoded_string SGVsbG8sIFdvcmxkIQ# 解码 Base64 编码字符串
decoded_data base64.b64decode(encoded_string)# 将解码后的数据转换为字符串
decoded_string decoded_data.decode(utf-8)print(Base64 解码结果:, decoded_string)3.1Base64 编解码使用的参数类型
Base64编码输入必须为字节输出为字节。Base64解码输入可以为字节也可以为字符串即如下两条代码等价
decoded_data base64.b64decode(encoded_string)
decoded_data base64.b64decode(encoded_data)不过传入字节对象是更常见和推荐的做法因为 Base64 编码本质上是处理字节数据的。
Base64解码输出为字节。
3.2Base64 编码后的字符串显示
Base64 编码将二进制数据转换为由 64 个字符组成的字符串每个字符都代表 6 位二进制数据这些字符是 ASCII 字符集中的可打印字符。 因此要显示编码后的结果而将编码后的字节数据转换为字符串时既可指定utf-8也可指定ascii如下两条代码两者效果等价
#指定utf-8
encoded_string encoded_data.decode(utf-8)
#指定ascii
encoded_string encoded_data.decode(ascii)3.3Base64 解码后的字符串显示
当原始数据为二进制数据时不需要将解码后的字节数据转换为字符串但如果原始数据为文本数据那么就需要显示解码后的文本字符串。 在将解码后的二进制数据转换为字符串时需要根据原始数据是否包含非 ASCII 字符来选择适当的编码方式。
原始数据包含非 ASCII 字符应该使用 UTF-8 编码或其他适当的 Unicode 编码方式进行解码。原始数据仅包含 ASCII 字符可以使用 ASCII 编码或UTF-8 编码进行解码。
四、Quoted-Printable编码解码
Quoted-printable引用打印是一种用于在电子邮件和其他文本协议中编码非ASCII字符的方法。该编码将非ASCII字符转换为可打印字符以便它们可以在各种系统和协议之间正确传输。
Quoted-printable编码的基本原则是
ASCII字符字节值小于128保持不变。非ASCII字符字节值大于或等于128被转换为等号后跟其十六进制值的表示形式。例如字母“é”被编码为“E9”。编码要求每行不能超过 76 个字符如果编码后的内容超过 76 个字符会在 76 个字符处插入一个软换行符等号 然后在下一行继续。
Quoted-Printable编码解码示例代码如下
import quopri# 原始字符串
string_data Hello, World!# 将字符串编码为字节
byte_data string_data.encode(utf-8)# Quoted-Printable 编码
encoded_data quopri.encodestring(byte_data)
encoded_string encoded_data.decode(utf-8)
print(Quoted-Printable 编码结果:, encoded_string)# Quoted-Printable 解码
decoded_data quopri.decodestring(encoded_data)# 将字节数据解码为字符串
decoded_string decoded_data.decode(utf-8)
print(解码后的字符串:, decoded_string)4.1Quoted-Printable编解码使用的参数类型
与Base64编解码使用的参数类型完全相同如下
Base64编码输入必须为字节输出为字节。Base64解码输入可以为字节也可以为字符串输出为字节。
4.2Quoted-Printable编码后的字符串显示
与Base64编码后的字符串显示方法相同因为编码后的字符也是ASCII 字符集中的可打印字符。 在将编码后的字节数据转换为字符串时既可指定utf-8也可指定ascii代码与3.2中相同。
4.3Quoted-Printable解码后的字符串显示
与Base64解码后的字符串显示方法相同不再赘述。
参考文档
Quoted-printable 编码介绍、编码解码转换