文章目录
- 一、报错场景
- 二、报错原因
- 三、解决方法
- 四、可能遇到的问题
- ascii' codec can't encode character u'\u3000' in position 0: ordinal not in range(128)
一、报错场景
在python2.7中使用chr(12288)填充中文空格,出现以下错误:
print(chr(12288))报错内容如下:
====================
D:\App\python\python2.7.13\Python27\python.exe D:\WorkSpace-Python\Test\test.py
Traceback (most recent call last):File "D:\WorkSpace-Python\Test\test.py", line 3, in <module>print(chr(12288))
ValueError: chr() arg not in range(256)
二、报错原因
报错原因是Python2.7中chr( K ) 将编码K 转为字符,K的范围是 0 ~ 255
而python 3.0中,chr( K ) 将编码K 转为字符,K的范围是 0 ~ 65535
chr(12288)在python3中表示中文空格
三、解决方法
1、Python2.7中
普通空格字符串
或chr(32)
表示英文空格(半角空格)
\u0020(半角空格)
、 \u3000(全角空格)
# -*- coding: UTF-8 -*-
import sysreload(sys)
sys.setdefaultencoding('utf-8')print("|{0}|".format(" ")) # 英文空格
print("|{0}|".format(chr(32))) # 英文空格
# 半角空格
half_space = u'\u0020'
print("|{0}|".format(half_space))print("|{0}|".format(" ")) # 全角空格
# 全角空格
full_space = u'\u3000'
print("|{0}|".format(full_space))输出结果为:
=========================
D:\App\python\python2.7.13\Python27\python.exe D:\WorkSpace-Python\Test\test.py
| |
| |
| |
| |
| |
整数32对应于ASCII字符集中的空格(space)。
2、python3中
chr(12288)、\u3000表示中文空格(全角空格)
print("| |")
# 全角空格
full_space = u'\u3000'
print("|{0}|".format(full_space))
print("|我|")输出结果为:
=============================
D:\App\python\python3.13.0\python.exe D:\WorkSpace-Python\Test\test.py
| |
| |
|我|
四、可能遇到的问题
ascii’ codec can’t encode character u’\u3000’ in position 0: ordinal not in range(128)
1、报错场景
python2.7中输出unicode字符,但是报错了。代码如下:
# -*- coding: UTF-8 -*-# 全角空格
full_space = u'\u3000'
print("|{0}|".format(full_space))输出内容:
=======================
D:\App\python\python2.7.13\Python27\python.exe D:\WorkSpace-Python\Test\test.py
Traceback (most recent call last):File "D:\WorkSpace-Python\Test\test.py", line 5, in <module>print("|{0}|".format(full_space))
UnicodeEncodeError: 'ascii' codec can't encode character u'\u3000' in position 0: ordinal not in range(128)
2、报错原因
Unicode编码错误:“ascii”编解码器无法对0-3位置的字符进行编码:序号不在范围内(128)
一些字符串无法被ascii解码
3、解决方法
在代码头中加入以下部分即可
# -*- coding: UTF-8 -*-
import sysreload(sys)
sys.setdefaultencoding('utf-8')
修改后代码:
# -*- coding: UTF-8 -*-
import sysreload(sys)
sys.setdefaultencoding('utf-8')# 全角空格
full_space = u'\u3000'
print("|{0}|".format(full_space))运行结果:
===========================
D:\App\python\python2.7.13\Python27\python.exe D:\WorkSpace-Python\Test\test.py
| |