2009-07-14 3 views
2

Мне нужно использовать специальные символы в моем приложении 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; 

Но когда я только PUSt символы в Python-скрипт я получаю сообщение об ошибке:

Non-ASCII character '\xc8' ... How can i use it in strings for my application?

ответ

11

Вы должны сказать переводчику, который кодирующего вас» повторное использование, потому что, по-видимому, в вашей системе по умолчанию используется ascii. См. PEP 263. В вашем случае, поместите следующую строку в верхней части файла:

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

Обратите внимание, что вам не придется писать точно что; PEP 263 позволяет больше свободы, чтобы разместить несколько популярных редакторов, которые используют несколько разные соглашения для той же цели. Кроме того, эта строка также может быть помещена во вторую строку, например. когда первый используется для shebang.

1

Вы сохраняете файл Python как UTF-8? Поддерживает ли ваш редактор UTF-8? Используете ли вы строки Unicode?

foo = u'ƃƃƃƃƃ' 
+0

Я не понимаю, почему нисходящий, поскольку вопрос настолько расплывчатый. +1. –

+0

попробуйте 4 варианта - с и без «кодирования»: «и с и без u» «- и вы увидите, что кодирование: делает разницу, а не строку unicode – hop

+0

@hop: я говорю по-французски, поэтому выясняю, как использовать символы, отличные от ASCII, были первой, что я сделал при изучении Python. :) Если вы используете необработанные строки, то он будет работать только в том случае, если платформа обрабатывает UTF-8 (или какую кодировку вы используете). Поэтому для PO полезно знать, что она должна использовать строки unicode. Поскольку она даже не представила образец, я не вижу, как можно обвинять ответчиков за то, что они недостаточно точны. –

0

Заявить строки Unicode.

SomeString = u'æøå»

3

Хотя ответы так тарифом все правильно, я думал, что обеспечит более полное лечение:

Самый простой способ представления не-ASCII-символ в литературе сценария должен использовать префикс u и u или U, например:

print u"Look \u0411\u043e\u0440\u0438\u0441, a G-clef: \U0001d11e" 

Это иллюстрирует:

  1. используя префикс ˙U, чтобы убедиться, что строка является unicode объект
  2. используя побег и, для символов в базовой многоязычной плоскости (U + FFFD и ниже)
  3. используя U-escape для символов в других плоскостях (U + 10000 и выше)
  4. , что Ƃ (U + 0182 LATIN CAPITAL LETTER B WITH TOPBAR) и Б (U + 0411 CYRILLIC CAPTIAL LETTER BE) всего лишь один пример многих подобных смутно Unicode codepoints

Кодировка сценария по умолчанию для Python, которая работает повсюду, является ASCII. Таким образом, вам придется использовать приведенные выше экраны для кодирования литералов символов, отличных от ASCII.Вы можете сообщить интерпретатор Python кодировки вашего сценария с линией, как:

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

Это только изменяет кодировку вашего сценария. Но тогда вы могли бы написать:

print u"Look Борис, a G-clef: " 

Обратите внимание, что вы все равно должны использовать префикс ˙U получить unicode объект, а не str объекта.

Наконец, является можно изменить кодировку по умолчанию для str ... но это не рекомендуется, так как это глобальное изменение и не может хорошо играть с другим кодом питона.

Смежные вопросы