Мое веб-приложение Python должно использовать unicode для всех строк?

Хорошо, так что изменение этого хука на это, похоже, работает, я не совсем уверен, что это правильный подход, но копание в коде библиотеки кажется нормальным.

$hook['pre_system'] = function() {
$dotenv = Dotenv\Dotenv::create(__DIR__);
$dotenv->load();

Если это не так по какой-либо причине, пожалуйста, дайте мне знать. Благодаря

6
задан Josh Gibson 5 May 2009 в 23:39
поделиться

4 ответа

В Python 3 все строки имеют Unicode. Таким образом, вы можете подготовиться к этому, используя строки u '' везде, где вам нужно, а затем, когда вы в конечном итоге перейдете на Python 3, используя инструмент 2to3 , все u исчезнет. И вы окажетесь в лучшем положении, потому что вы уже проверили свой код со строками Unicode.

См. Текст Vs. Данные вместо Unicode Vs. 8 бит для получения дополнительной информации.

10
ответ дан 8 December 2019 в 02:40
поделиться

Что будет проблемой, если я этого не сделаю?

Я житель Запада, живу в Японии, поэтому я лично видел, что нужно для работы с не- -ASCII символы. Проблема, если вы не используете строки Unicode, состоит в том, что ваш код будет разочаровывать те части мира, которые используют что-либо, кроме AZ. У нашей компании было много разочарований, когда определенное веб-программное обеспечение отображало японские символы, не создавая при этом полного беспорядка.

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

"Попутки":

  1. Убедитесь, что ваши выходные веб-страницы правильно указывают используемую кодировку (например, с помощью заголовка кодирования содержимого), а затем правильно кодируйте все строки Unicode на выходе. Строки Unicode Python 3 - отличное улучшение, чтобы делать это правильно.

  2. Делайте все со строками Unicode и конвертируйте в определенную кодировку только в последний момент, когда выполняете вывод. Другие языки, такие как PHP, подвержены ошибкам при работе с Unicode, например, в форме UTF-8. Скажем, вам нужно обрезать строку Unicode. Если он имеет внутреннюю форму UTF-8, есть риск, что вы можете отрезать многобайтовый символ на полпути, что приведет к мусору. Внутреннее использование строк Unicode в Python затрудняет совершение этих ошибок.

3
ответ дан 8 December 2019 в 02:40
поделиться

Вы можете избежать u '' в python 2.6, выполнив:

from __future__ import unicode_literals

Это сделает «строковыми литералами» объектами Unicode, как в питоне 3;

20
ответ дан 8 December 2019 в 02:40
поделиться

Внутреннее использование Unicode - хороший способ избежать проблем с символами, отличными от ASCII. Преобразование в границах вашего приложения (входящие данные в Unicode, исходящие данные в UTF-8 или что-то еще). Pylons может выполнять преобразование за вас во многих случаях: например, контроллеры могут безопасно возвращать строки Unicode; Модели SQLAlchemy могут объявлять столбцы Unicode.

Что касается строковых литералов в исходном коде: префикс u обычно не требуется. Вы можете безопасно смешивать объекты str, содержащие ASCII, с объектами Unicode. Просто убедитесь, что все ваши строковые литералы являются либо чистыми ASCII, либо u "unicode".

1
ответ дан 8 December 2019 в 02:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: