Да, это было бы enumerate
функция! Или главное, необходимо сделать:
list(enumerate([3,7,19]))
[(0, 3), (1, 7), (2, 19)]
использование utf8
на самом деле имеет мало общего с этим - почти никто не использует идентификаторы Unicode, и программа может легко поддерживать кодировку без включения строковых литералов UTF-8 в код.
Но да, лучшая мудрость, которую я знаю для работы с кодировками, заключается в следующем:
Само существование миллиона различных наборов символов и миллиона различных кодировок должно быть, по возможности, деталью интерфейса . Есть некоторые вещи, о которых вам все еще нужно помнить - например, различные сопоставления для разных языков - но это идеальный вариант, к которому в любом случае следует стремиться, и его соблюдение, насколько это возможно, должно значительно сократить количество "проблем с кодировкой" в вашем коде.
Чтобы ответить на ваш вопрос более прямо, да - если вы читаете текстовые данные извне без декодирования или отправляете данные куда-либо без кодирования, есть очень большая вероятность, что вы делаете ошибку, и что ваш код сломается, если кто-то другой использует его в другом языке, чем ваш.