Python中的特殊字符

2 投票
6 回答
4594 浏览
提问于 2025-04-15 12:54

我在我的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"

这说明了:

  1. 使用u前缀来确保字符串是一个unicode对象
  2. 对于基本多语言平面中的字符(U+FFFD及以下),使用u转义符
  3. 对于其他平面中的字符(U+10000及以上),使用U转义符
  4. 像Ƃ(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代码不兼容。

11

你需要告诉解释器你使用的编码方式,因为在你的系统上,它默认使用的是ascii编码。可以参考一下PEP 263。在你的文件顶部加上以下内容:

# -*- coding: utf-8 -*-

注意,你不一定要完全写成那样;PEP 263 允许有更多的灵活性,以适应一些流行的编辑器,它们可能会使用稍微不同的方式来达到同样的目的。此外,这个字符串也可以放在第二行,比如当第一行用作shebang时。

撰写回答