Найти - Пользователи
Полная версия: Кодировка python 3 utf-8 в idle
Начало » Python для новичков » Кодировка python 3 utf-8 в idle
1
podolskiy
Добрый день! Сильно не пинайте, я только начинаю
Есть csv файл с кодировкой utf-8. Делаю
 # -*- coding: utf-8 -*-
import csv
reader = csv.reader(open(r"F:\py\test1.csv"))
for row in reader:
    print (row)
    print ("Привет")

Вывод:


Почему так? На сколько я понял с гугла, в 3.5 уже по умолчанию используется utf-8, то есть вообще первую строку можно не использовать, и так должно все работать. А не работает даже с ней.
Если кодировку перевести в ANSI, то все нормально отрабатывает
Спасибо!
JOHN_16
вы путаете кодировку исходного кода программы с кодировкой файла который вы открываете. ДЛя корректности нужно открыть файл и указать кодировку в которой кодирован конкретно этот файл
doza_and
 reader = csv.reader(open(r"F:\py\test1.csv",encoding="utf-8"))
podolskiy
Да, так работает, спасибо.
И еще уточнить, в оф. документации пишут, что файлы по умолчанию открываются в utf-8

Normally, files are opened in text mode, that means, you read and write strings from and to the file, which are encoded in a specific encoding (the default being UTF-8).

Почему тогда нужно указывать кодировку utf-8 при открытии?
doza_and
podolskiy
Почему тогда нужно указывать кодировку utf-8 при открытии?
Windows?
py.user.next
podolskiy
И еще уточнить, в оф. документации пишут, что файлы по умолчанию открываются в utf-8
python.org. open()
encoding is the name of the encoding used to decode or encode the file. This should only be used in text mode. The default encoding is platform dependent (whatever locale.getpreferredencoding() returns), but any text encoding supported by Python can be used. See the codecs module for the list of supported encodings.

podolskiy
Почему тогда нужно указывать кодировку utf-8 при открытии?
Документация, которую ты читаешь, сомнительная, либо ты просто криво её читаешь. Кодировка utf-8 по умолчанию ставится для объявления кодировки исходника в третьем питоне. И ещё кодировка utf-8 по умолчанию используется при кодировании строки в классе str. Но ты, скорее всего, перепутал кодировку исходника с кодировкой открытого через open() файла.
podolskiy
doza_and
Да, Windows
 locale.getpreferredencoding()
выводит cp1251
В этом причина?
py.user.next
Видимо криво читаю, так как документация с оф. сайта
py.user.next
podolskiy
Видимо криво читаю, так как документация с оф. сайта
podolskiy
И еще уточнить, в оф. документации пишут, что файлы по умолчанию открываются в utf-8
Где такое пишут? Нигде такое не пишут. На каждой платформе своя кодировка, которая может быть utf-8, а может не быть utf-8.
avinean
reader = csv.reader(open(r“F:\py\test1.csv”,encoding=“utf-8”))


__________________________________________________
http://goit.com.ua
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB