Диакритические знаки - PullRequest
       18

Диакритические знаки

2 голосов
/ 22 декабря 2009

Как мне написать «mąka» на Python без исключения?

Я пробовал var= u"mąka" и var= unicode("mąka") и т.д ... ничего не помогает

У меня есть определение кода в первой строке моего документа, и все же у меня есть это исключение:

Кодек utf8 не может декодировать байт 0xb1 в позиции 0: неожиданный байт кода

Ответы [ 4 ]

4 голосов
/ 22 декабря 2009

Сохраните следующие 2 строки в write_mako.py:

# -*- encoding: utf-8 -*-
open(u"mąka.txt", 'w').write("mąka\n")

Пробег:

$ python write_mako.py

mąka.txt файл, содержащий слово mąka, должен быть создан в текущем каталоге.

Если это не работает, вы можете использовать chardet для определения фактической кодировки файла (см. пример использования chardet ):

import chardet

print chardet.detect(open('write_mako.py', 'rb').read())

В моем случае это печатает:

{'confidence': 0.75249999999999995, 'encoding': 'utf-8'}
2 голосов
/ 22 декабря 2009

Строка # - - -: - - должна указывать кодировку, в которой исходный файл сохранен.

'utf8' codec can't decode byte 0xb1 in position 0: unexpected code byte

означает, что вы не сохраняете исходный файл в UTF-8. Вы можете сохранить исходный файл в любой кодировке, которая поддерживает символы, которые вы используете в исходном коде, просто убедитесь, что вы знаете, что это такое, и имеете соответствующую строку кодирования.

1 голос
/ 22 декабря 2009

Этот код работает для меня, сохраняя файл как UTF-8:

v = u"mąka"
print repr(v)

Вывод, который я получаю:

u'm\u0105ka'

Пожалуйста, скопируйте и вставьте точную ошибку, которую вы получаете. Если вы получаете эту ошибку:

UnicodeEncodeError: 'charmap' codec can't encode character ... in position ...: character maps to <undefined>

Затем вы пытаетесь вывести символ где-то, что не поддерживает UTF-8 (например, для кодировки символов вашей оболочки задано другое значение, чем UTF-8).

1 голос
/ 22 декабря 2009

Какое исключение вы получаете?

Вы можете попробовать сохранить файл с исходным кодом в формате UTF-8 и поместить его вверху файла:

# coding=utf-8

Это говорит Python, что файл сохранен как UTF-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...