在 Python 3.4.3 中使用 ASCII 转换时的输出问题
output issue when using ASCII convertion in Python 3.4.3
我尝试根据解码输入将 ASCII 字符写入文件。
outfile = open ('output','w')
如果使用 chr() 的常量值,这个就可以工作
c = chr(65) << work
outfile.write(c)
但是这个不行(注:i是整型变量)
c = chr(i+65) << not work
outfile.write(c)
抱怨"UnicodeEncodeError: 'charmap' codec can't encode character '\x81' in position 0: character maps to "
十进制转ASCII后,chr(n),应该已经是字符了吧?
为什么不起作用?
在Python3中,chr
函数returns一个单字符的Unicode字符串(一个str
实例)。在您的代码中的某个时刻,i
取值 64
,当您执行 chr(i+65)
时,它会创建字符 '\x81'
。那是一个控制字符,不是可以用ASCII编码的东西,这就是为什么你写出来的时候会出错。
有多种方法可以解决此问题,最好的方法在很大程度上取决于您要完成的任务。
第一个解决方案是弄清楚为什么您得到的 i
值为 64
并阻止这种情况发生。这可能是带有 range
边界的差一错误,或者其他易于修复的错误。
如果您真的想将 '\x81'
写入您的文件,另一种方法是更改您打开文件的方式,指定默认编码以外的编码(或以二进制模式打开并处理编码自己)。您还可以直接使用 bytes
构造函数从整数创建二进制字符串:bytes((i + 65,))
。请注意,即使只有一个值,参数也必须是可迭代的。
我对输入 i 添加了一个限制。
我 < 128
现在可以正常使用了。
感谢大家的帮助。
我尝试根据解码输入将 ASCII 字符写入文件。
outfile = open ('output','w')
如果使用 chr() 的常量值,这个就可以工作
c = chr(65) << work
outfile.write(c)
但是这个不行(注:i是整型变量)
c = chr(i+65) << not work
outfile.write(c)
抱怨"UnicodeEncodeError: 'charmap' codec can't encode character '\x81' in position 0: character maps to "
十进制转ASCII后,chr(n),应该已经是字符了吧? 为什么不起作用?
在Python3中,chr
函数returns一个单字符的Unicode字符串(一个str
实例)。在您的代码中的某个时刻,i
取值 64
,当您执行 chr(i+65)
时,它会创建字符 '\x81'
。那是一个控制字符,不是可以用ASCII编码的东西,这就是为什么你写出来的时候会出错。
有多种方法可以解决此问题,最好的方法在很大程度上取决于您要完成的任务。
第一个解决方案是弄清楚为什么您得到的 i
值为 64
并阻止这种情况发生。这可能是带有 range
边界的差一错误,或者其他易于修复的错误。
如果您真的想将 '\x81'
写入您的文件,另一种方法是更改您打开文件的方式,指定默认编码以外的编码(或以二进制模式打开并处理编码自己)。您还可以直接使用 bytes
构造函数从整数创建二进制字符串:bytes((i + 65,))
。请注意,即使只有一个值,参数也必须是可迭代的。
我对输入 i 添加了一个限制。
我 < 128
现在可以正常使用了。
感谢大家的帮助。