重定向到文件时发生 UnicodeDecodeError
- 2025-03-14 08:57:00
- admin 原创
- 63
问题描述:
我在 Ubuntu 终端(编码设置为 utf-8)中运行此代码片段两次,一次使用./test.py
,然后使用./test.py >out.txt
:
uni = u"/u001A/u0BC3/u1451U0001D10C"
print uni
如果没有重定向,它会打印垃圾。如果重定向,我会得到一个 UnicodeDecodeError。有人能解释一下为什么我只在第二种情况下得到错误吗?或者最好能详细解释一下这两种情况下幕后发生了什么?
解决方案 1:
解决此类编码问题的关键在于理解“字符串”在原则上有两个不同的概念:(1)字符的字符串,和(2)字节的字符串/数组。长期以来,由于不超过 256 个字符的编码(ASCII、Latin-1、Windows-1252、Mac OS Roman 等)的历史普遍性,这种区别几乎被忽略:这些编码将一组常用字符映射到 0 到 255 之间的数字(即字节);在网络出现之前,文件交换相对有限,这使得这种不兼容编码的情况可以容忍,因为大多数程序可以忽略存在多种编码的事实,只要它们生成的文本保留在同一操作系统上:这样的程序只会将文本视为字节(通过操作系统使用的编码)。正确的现代观点基于以下两点正确地区分了这两个字符串概念:
字符大多与计算机无关:人们可以在黑板等处绘制它们,例如 بايثون、中蟒和
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD