Python中的特殊字符
我在我的Python应用程序中需要使用特殊字符。比如说:ƃ。我有这样的信息:
U+0183 LATIN SMALL LETTER B WITH TOPBAR
General Character Properties
In Unicode since: 1.1
Unicode category: Letter, Lowercase
Various Useful Representations
UTF-8: 0xC6 0x83
UTF-16: 0x0183
C octal escaped UTF-8: \306\203
XML decimal entity: &# 387;
但是当我直接把这些符号放进Python脚本里时,就会出现错误:
非ASCII字符 '\xc8' ... 我该如何在我的应用程序的字符串中使用它呢?
6 个回答
3
这是一个链接,指向Python官方文档中的一个部分,主要讲的是源代码的编码问题。简单来说,编码就是计算机如何理解和处理文本的方式。这个文档会告诉你在写Python代码时,应该如何处理不同的字符和符号,以确保代码能够正确运行。
3
虽然之前的回答都没错,但我想提供一个更全面的解释:
在脚本中表示非ASCII字符最简单的方法是使用u前缀和u或U转义符,像这样:
print u"Look \u0411\u043e\u0440\u0438\u0441, a G-clef: \U0001d11e"
这说明了:
- 使用u前缀来确保字符串是一个
unicode
对象 - 对于基本多语言平面中的字符(U+FFFD及以下),使用u转义符
- 对于其他平面中的字符(U+10000及以上),使用U转义符
- 像Ƃ(U+0182 拉丁大写字母B带顶杠)和Б(U+0411 西里尔大写字母BE)这样的字符只是许多相似的Unicode代码点中的一个例子
Python的默认脚本编码是ASCII,这在任何地方都能用。因此,你需要使用上述转义符来编码非ASCII字符的字面量。你可以通过像下面这样的行来告诉Python解释器你的脚本编码:
# -*- coding: utf-8 -*-
这只是改变了你脚本的编码。但接下来你可以写:
print u"Look Борис, a G-clef: "
注意,你仍然需要使用u前缀来获得一个unicode
对象,而不是str
对象。
最后,确实可以改变str
使用的默认编码……但这并不推荐,因为这是一个全局改变,可能会和其他Python代码不兼容。