UTF-8 теперь является стандартом де-факто, потому что if может представлять любой символ Юникода, но многие системы (в основном Windows) по-прежнему используют другие кодировки по соображениям совместимости.Например, для западноевропейских языков Windows использует cp1252, который является вариантом Latin1.
Latin1 - интересная кодировка, потому что любой байт допустим в Latin1 и представляет символ Юникода той же кодовой точки.Из-за этого, это кодировка , используемая, когда вы хотите иметь пуленепробиваемое декодирование и не уверены в фактической кодировке.Просто, если кодировка отличается, вы будете читать странные символов.Например, эта строка в кодировке utf-8 "fête" (по-французски "fest") будет читать 'fête'
как строку байтов в кодировке Latin1.
Так что это не прервется (но может дать неправильные символы):
...
with open(filename, 'r', encoding='Latin1') as csvfile:
csvreader = csv.reader(csvfile)
...