2015-12-31 3 views
1

Я занимаюсь языками, которые не являются нами, а также иногда приходится писать в Python 2.x. Чтение этой статьи: http://www.snarky.ca/why-python-3-exists от Brett Cannon заставляет меня задаться вопросом, означает ли это, что если я использую строки, которые являются только символами, а не байтами, я должен добавить все свои строки с помощью u, чтобы избежать возможного смешивания между байтовыми строками и unicode-строками ? И: Это также относится к Jython?Python 2.x Строки: Unicode и Bytes

И последний вопрос: -*- coding: utf-8 -*- полностью не зависит от вышесказанного, предоставляя только кодировку самого файла - правильно?

ответ

5

Да, вы хотите сохранить текст в unicode объектов (str типа в Python 3), а также поддерживать сандвич Unicode (декодирует входящие данные как можно скорее, отложить кодирование, пока данные не нужно, чтобы выйти из приложения). См. Ned Batchelder's excellent Unicode presentation.

Это также относится к Jython, что является еще одной реализацией языка Python.

PEP 263 source code encoding declaration сообщает интерпретатору, какой кодек использовать при декодировании байтов в исходном коде. Это помогает при определении литералов Unicode с байтами без ASCII, но не определяет, как кодируются или декодируются другие данные, отличные от исходного кода.

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