Написано правильно.Ваш зритель использует неправильную кодировку.Установите эту программу в UTF-8 или попробуйте вместо этого encoding = 'utf-8-sig', esp.если вы на Windows.Это записывает подпись, которую редакторы, такие как Notepad и Excel, обнаруживают и автоматически декодируют как UTF-8.
Пример:
#coding:utf8
import csv
with open('test1.csv','w',encoding='utf8',newline='') as f:
w = csv.writer(f)
w.writerow(['The ‘Hello, World’ event','你好,世界!'])
w.writerow(['The ‘Hello, World’ event','你好,世界!'])
with open('test2.csv','w',encoding='utf-8-sig',newline='') as f:
w = csv.writer(f)
w.writerow(['The ‘Hello, World’ event','你好,世界!'])
w.writerow(['The ‘Hello, World’ event','你好,世界!'])
test1.csv:
test2.csv:
В остальном файлы кодируются идентично, за исключением подписи, намекающей на кодировку UTF-8.Windows примет локализованную кодировку по умолчанию (обычно Windows-1252) без нее.Даже мой инструмент сравнения в шестнадцатеричном формате предполагал, что Windows-1252:
Лучший редактор (например, Notepad ++ или более новые версии Notepad) будет отображать оба файла правильно.