Явной кодировке символов и кодированию/декодированию нужно способствовать как “лучшая практика” в Perl?

Да, это было бы enumerate функция! Или главное, необходимо сделать:

list(enumerate([3,7,19]))

[(0, 3), (1, 7), (2, 19)]

5
задан 5 revs, 2 users 65% 23 May 2017 в 12:19
поделиться

1 ответ

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

Но да, лучшая мудрость, которую я знаю для работы с кодировками, заключается в следующем:

  • Всегда знайте, откуда поступают ваши данные и как они отформатированы, и декодируйте их как можно скорее (если это не подразумевается обрабатываться как байты).
  • Всегда понимайте формат данных, в который вы пишете или что ожидает ваш клиент, и кодируйте на выходе (если ваши данные уже не байты).
  • А когда дело касается текста, всегда работайте со строками символов «внутри» вашей программы.

Само существование миллиона различных наборов символов и миллиона различных кодировок должно быть, по возможности, деталью интерфейса . Есть некоторые вещи, о которых вам все еще нужно помнить - например, различные сопоставления для разных языков - но это идеальный вариант, к которому в любом случае следует стремиться, и его соблюдение, насколько это возможно, должно значительно сократить количество "проблем с кодировкой" в вашем коде.

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

14
ответ дан 18 December 2019 в 13:15
поделиться
Другие вопросы по тегам:

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