当前位置: 首页 > wzjs >正文

深圳购物网站建设价格网络营销制度课完整版

深圳购物网站建设价格,网络营销制度课完整版,网站建设头部代码,WordPress不能支付宝交易吗Python 2 存在两种不同的字符串类型,分别是 str 类型和 unicode 类型 str 类型: 实际上存储的是字节序列(bytes sequence),而不是真正的文本字符 这些字节序列可以通过特定的编码规则来解释为文本 定义一个普通的字符…

Python 2

存在两种不同的字符串类型,分别是 str 类型和 unicode 类型

str 类型:
实际上存储的是字节序列(bytes sequence),而不是真正的文本字符
这些字节序列可以通过特定的编码规则来解释为文本
定义一个普通的字符串字面量时,它就是 str 类型

# -*- coding: utf-8 -*-
s = '你好'  # str 类型,字节序列
print type(s) # <type 'str'>

字符串 s 是 str 类型,如果文件编码为 UTF - 8,那么 s 实际上存储的是 “你好” 这两个中文字符按照 UTF - 8 编码后的字节序列
在 UTF - 8 编码中,“你” 对应的字节是 \xe4\xbd\xa0,“好” 对应的字节是 \xe5\xa5\xbd
所以 s 存储的就是 ‘\xe4\xbd\xa0\xe5\xa5\xbd’ 这样的字节序列

unicode 类型:
存储的是真正的文本数据
unicode 类型存储的是真正的文本数据,也就是 Unicode 码点(code point)
Unicode 是一种字符集,它为世界上几乎所有的字符都分配了一个唯一的数字编号(码点)
unicode 类型的字符串就是由这些码点组成的

# -*- coding: utf-8 -*-
u = u'你好'
print(type(u))  # 输出 <type 'unicode'>

字符串 u 是 unicode 类型,它存储的是 “你” 和 “好” 这两个字符对应的 Unicode 码点
“你” 的 Unicode 码点是 U+4F60,“好” 的 Unicode 码点是 U+597D
u 内部存储的就是这些码点信息,不依赖于具体的编码方式

# -*- coding: utf-8 -*-
s = '你好'  # str 类型,字节序列
u = u'你好'  # unicode 类型,文本数据
print type(s) # <type 'str'>
print type(u) # <type 'unicode'>
# -*- coding: utf-8 -*-
# str 类型转 unicode 类型(解码)
s = '你好'
u = s.decode('utf-8')
print(type(u))  # 输出 <type 'unicode'># unicode 类型转 str 类型(编码)
new_s = u.encode('utf-8')
print(type(new_s))  # 输出 <type 'str'>

decode 方法将 str 类型的字节序列按照指定的编码(这里是 UTF - 8)解码为 unicode 类型的字符串
encode 方法则将 unicode 类型的字符串按照指定的编码编码为 str 类型的字节序列

Python 3 - 统一了字符串类型

只有 str 类型用于表示文本数据,它存储的是 Unicode 字符
同时引入了 bytes 类型来表示二进制数据

s = '你好'  # str 类型,存储的是 unicode 字符
u = u'你好'  # str 类型,存储的是 unicode 字符
b = b'hello'  # bytes 类型,二进制数据
print(type(s)) # <class 'str'>
print(type(u)) # <class 'str'>
print(type(b)) # <class 'bytes'>

Python 3 中字符串编码/解码操作

编码(encode() 方法)

编码是将 str 类型的字符串转换为 bytes 类型的二进制数据,需要指定编码方式

s = '你好'
# 使用 UTF-8 编码
b = s.encode('utf-8')
print(b) # b'\xe4\xbd\xa0\xe5\xa5\xbd'print(type(s)) # <class 'str'>
print(type(b)) # <class 'bytes'>

解码(decode() 方法)

解码是将 bytes 类型的二进制数据转换为 str 类型的字符串,同样需要指定编码方式
该编码方式要和编码时使用的一致,否则可能会出现解码错误。

b = b'\xe4\xbd\xa0\xe5\xa5\xbd'
# 使用 UTF-8 解码
s = b.decode('utf-8')
print(s)

常见编码方式

ASCII:是最早的字符编码标准,使用 7 位二进制数来表示 128 个字符,主要用于表示英文字母、数字和一些标点符号等,只能处理英文等有限字符,无法表示中文等其他语言的字符。
UTF - 8:是一种可变长度的 Unicode 编码,它可以使用 1 - 4 个字节来表示一个字符,对于 ASCII 字符,只需要 1 个字节,而对于中文等其他语言的字符,通常需要 3 个字节。它是目前互联网上使用最广泛的编码方式。
GBK:是中国国家标准的汉字编码,使用 1 - 2 个字节来表示字符,主要用于表示中文,能够覆盖大部分常用的中文字符。

处理文件读写时的编码问题

在进行文件读写操作时,需要指定正确的编码方式,否则可能会出现乱码问题。

# 写入文件,指定编码为 UTF-8
with open('test.txt', 'w', encoding='utf-8') as f:f.write('你好,世界!')# 读取文件,指定编码为 UTF-8
with open('test.txt', 'r', encoding='utf-8') as f:content = f.read()print(content)

总结

理解和正确处理字符串编码在 Python 编程中非常重要,尤其是在处理多语言文本和文件操作时,需要特别注意编码的一致性

附录

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) 

这个错误通常在 Python 2 中出现,它表示在尝试将 Unicode 字符串编码为 ASCII 编码时,遇到了不在 ASCII 字符范围内(0 - 127)的字符,从而导致编码失败。下面详细分析错误原因及解决办法。

在 Python 2 里,默认的编码方式是 ASCII,当你进行字符串操作(如打印、写入文件等)时,如果涉及到非 ASCII 字符(像中文、日文等),Python 会尝试使用 ASCII 编码来处理这些字符,而 ASCII 编码只能表示 128 个字符,无法表示非 ASCII 字符,因此就会抛出 UnicodeEncodeError 异常。

# -*- coding: utf-8 -*-
u = u'你好'
print(u)

在上述代码中,定义了一个 unicode 类型的字符串 u,当执行 print(u) 时,Python 会尝试将 u 编码为 ASCII 编码以便输出,由于 “你好” 不在 ASCII 字符范围内,就会触发错误。

解决办法

  1. 手动编码
    在输出或处理 Unicode 字符串时,手动指定合适的编码方式(如 UTF - 8)进行编码
# -*- coding: utf-8 -*-
u = u'你好'
print(u.encode('utf-8'))

在这个例子中,使用 encode(‘utf-8’) 方法将 unicode 字符串编码为 UTF - 8 字节序列,这样就能正确处理非 ASCII 字符

  1. 修改系统默认编码
    可以通过 sys 模块修改 Python 解释器的默认编码。
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')u = u'你好'
print(u)

不过,sys.setdefaultencoding 这种方法并不推荐,因为它可能会掩盖一些潜在的编码问题,并且在 Python 3 中已经移除了这个方法。

  1. 尽量使用 unicode 类型进行操作
    在代码中尽量使用 unicode 类型的字符串进行操作,直到最后需要输出或存储时再进行编码。
# -*- coding: utf-8 -*-
def process_text():text = u'你好,世界!'# 进行一些文本处理操作new_text = text.upper()return new_textresult = process_text()
print(result.encode('utf-8'))

在这个示例中,函数内部使用 unicode 类型的字符串进行处理,最后输出时再编码为 UTF - 8

  1. 使用 Python 3
    Python 3 对字符串编码进行了改进,默认的字符串类型是 str,它存储的是 Unicode 字符,因此在处理多语言文本时更加方便,不容易出现编码问题。如果可以,建议迁移到 Python 3 进行开发。

综上所述,在 Python 2 中处理非 ASCII 字符时,要特别注意编码问题,确保在合适的时机进行编码和解码操作。

http://www.dtcms.com/wzjs/368402.html

相关文章:

  • 如何做一条动态网站推广app大全
  • 出名的网站建设软件云巅seo
  • 昆明做网站做的好的公司信息推广的方式有哪些
  • 安徽飞亚建设网站怎么在网上推销产品
  • 做游戏特效的网站重庆seo整站优化报价
  • 学校的网站的代码模板在线代理浏览网址
  • 网站编程赚钱收录平台
  • 专科医院网站建设培训学校机构有哪些
  • 舟山建设管理网站百度推广代理公司哪家好
  • 同一个域名可以做几个网站吗迅雷下载磁力天堂
  • 做喜报的网站比较靠谱的电商培训机构
  • 郑州企业网站排名优化公司自己怎么做引流推广
  • 柳州企业网站建设价格免费网络推广的方法
  • 秀设计网站今天特大新闻
  • 免费建立com网站app推广方案范例
  • 平面设计网站模板杭州关键词排名系统
  • 一个网站多个子域名优化怎么申请一个网站
  • 营销型网站建设的定义南宁百度关键词排名公司
  • 东平房产网珠海seo排名收费
  • 网站建设的主要工作流程北京网站建设开发公司
  • 提高网站注册率南京seo网络推广
  • 广州房地产网站建设方案西安seo引擎搜索优化
  • 什么网站可以用手机做兼职赚钱搜索引擎优化的英语简称
  • 钟表珠宝商城网站建设定制网站建设推广服务
  • 公司网站首页大图怎么做站长工具关键词查询
  • 长安网站建设方案什么是搜索引擎优化推广
  • 网站开发中要做哪些东西seo自然排名关键词来源的优缺点
  • 渭南b2c网站制作价格宁波如何做抖音seo搜索优化
  • 江苏网站建设要多少钱百度关键词查询
  • 创建论坛网站需要多少钱自己如何优化网站排名