Python 发表于 2015-8-6 23:19:33

python 如何对待版权 © 特殊字符的编码问题

python 如何对待版权 © 特殊字符的编码问题

Python([ˈpaɪθən])是一种面向对象、解释型计算机程序设计语言。Python语法简洁、清晰,具有丰富和强大的类库。
Python源代码遵循GPL(GNU General Public License)协议,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。
Python常被称为胶水语言,能把用其他语言编写的各模块(尤其是C/C++)轻松地联结在一起。常见情形是,用Python快速生成程序原型(有时甚至是程序最终界面),然后对其中有特别要求的部分,用更合适的语言改写;譬如:3D游戏中的图形渲染模块,性能要求特别高,就可用C/C++重写,而后封装为Python可调用的扩展类库。需要注意的是,在您使用扩展类库时可能需要考虑平台问题,某些扩展类库可能不提供跨平台实现。


以上为版权 © 特殊字符在HTML及XML中的正确表示形式。
若直接将 © 编写在 HTML、XML 代码中,也不会出现什么显示问题;但当用Python抓取此页面或用Python查找替换 © 特殊字符时,由于 Python 编码问题,可能会引发代码错误提示。
百度了一下,关于用Python处理 © 特殊字符的文章并不多,所以,只能自已想办法解决。


IDLE图中 "\xc2\xa9" 及 b"\xc2\xa9" 是 © 特殊字符的二进制形式。
在使用某些IDE查看时,也会显示如此;


当然,用Python抓取页面,不进行编码时,在某些IDE中也会显示如此。


若对其进行 decode("utf8") 直接解码,或加 "ignore" 参数 decode("utf8", "ignore") 或 decode("utf8", "replace"),都会提示
builtins.UnicodeEncodeError: 'gbk' codec can't encode character '\xa9' in position 52: illegal multibyte sequence
所以,一种解决办法是 replace(b"\xc2\xa9", b' ').decode("utf8")) 将其替换成其它字符,譬如:空格或自定义字符;再用©或©字符替换。
还有一种解决办法,就是建一个HTML、XML文件,写入相同 © 特殊字符,再将源文件与此HTML、XML文件中的 © 特殊字符进行相应比较、删除、替换处理;当然,最好还是替换为©或©字符。
此外,就是采用 u'\xa9' 字符,以下为IDLE及某些IDE中的测试结果:




查看标准输出默认编码及默认系统编码,字符名称:


版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。

页: [1]
查看完整版本: python 如何对待版权 © 特殊字符的编码问题