диаграммы водопада, понимающие, что зазоры в оранжевом на картинке

, используя str( text ), является на самом деле плохой идеей, когда вы не можете быть на 100% уверены в кодировке по умолчанию вашего питона и в точном содержании строки --- последнее было бы типичным для текста, полученного из Интернета. также, в зависимости от того, что вы хотите сделать, использование print text.encode( 'utf-8' ) или print repr( text.encode( 'utf-8' ) ) может привести к неутешительным результатам, поскольку вы можете получить рендеринг, полный нечитаемых кодовых точек, таких как \x3a.

действительно использовать командную строку с поддержкой unicode (трудно под Windows, легко под Linux) и переключиться с python 2.x на python 3.x. легкость и ясность обработки текстовых и байтов, предоставляемых новой версией python 3, действительно являются одним из больших выигрышей, которые вы можете ожидать. это означает, что вам придется потратить немного времени на изучение различия между «байтами» и «текстом» и понять концепцию кодировок символов, но тогда это время намного лучше потрачено в среде python 3, поскольку новый подход python к этим неприятные проблемы намного яснее и гораздо меньше подвержены ошибкам, чем предлагал python 2. я бы зашел так далеко, чтобы подойти к подходу python 2 к unicode проблематичным в ретроспективе, хотя я привык думать об этом как о превосходном --- когда я сравнивал его с , эта проблема обрабатывается в php .

edit Я просто остановился на связанном обсуждении здесь, на SO, и нашел этот комментарий о том, как php в эти дни решает проблемы с unicode / encoding:

Это как мышь, пытающаяся съесть слона. Обрабатывая Unicode как расширение ASCII (у нас есть обычные строки, и у нас есть mb_strings), он получает вещи не так, и получает зависание от того, какие особые случаи необходимы для работы с символами с забавными squiggles, которым требуется более одного байта. Если вы рассматриваете Unicode как предоставление абстрактного пространства для любого персонажа, который вам нужен, ASCII будет размещен в нем без необходимости рассматривать его как особый случай.

blockquote>

Я цитирую это здесь, потому что по моему опыту 90% всех SO python + unicode-тем, похоже, исходят от людей, которые были в порядке с ascii или, может быть, латинскими-1, укушенными случайным персонажем, который не поддерживался в их обычных настройках, а затем в основном просто хотел избавиться из этого. что вы делаете при переключении на python 3, именно то, что предлагает вышеперечисленный комментатор: вместо просмотра unicode как досадного расширения ascii вы начинаете рассматривать ascii (и почти любую другую кодировку, которую вы когда-либо встречаете) как подмножество (s ) юникода.

, чтобы быть правдой, unicode v6, конечно, не последнее слово в кодировках, но он настолько близок к универсальности, что вы можете привыкнуть к нему.

0
задан trincot 18 January 2019 в 22:20
поделиться