Проблема с кодировкой UTF- / csv для excel

РЕДАКТИРОВАТЬ:

Как предложено, специальные символы отображаются правильно, если я использую блокнот ++ для открытия файла csv. Они также отображаются правильно, когда я импортирую файл csv в excel. Как я могу сгенерировать файл csv, который отображается правильно при открытии excel, поскольку импорт файлов не является вариантом для пользователей

Я создаю файл csv, который обрабатывается с помощью Excel. Специальные символы, такие как «é», отображаются неправильно, когда файл открывается с помощью excel введите описание изображения здесь

Это poc, который я использую для создания файла csv

# -*- coding: utf-8 -*- import unicodecsv as csv import codecs import sys reload(sys) sys.setdefaultencoding("utf-8") def write_csv(file,headers): resultFile =codecs.open(file, "w+", "utf-8") #headers=[s.encode('utf-8') for s in headers] wr = csv.writer(resultFile, dialect='excel',delimiter=";",encoding="utf-8") wr.writerow(headers) resultFile.close() headers=[""] headers.append("Command") headers.append("Vérification".encode('utf-8')) write_csv(r"C:\test2.csv",headers) 

Решение Python 2 с использованием unicodecsv . Обратите внимание, что в документации для unicodecsv говорится, что модуль должен быть открыт в двоичном режиме ( wb ). Обязательно записывайте строки Unicode. #coding требуется для поддержки символов, отличных от ASCII, в исходном файле. Обязательно сохраните исходный файл в UTF-8.

 #coding:utf8 import unicodecsv with open('test.csv','wb') as f: # Manually encode a BOM, utf-8-sig didn't work with unicodecsv f.write(u'\ufeff'.encode('utf8')) w = unicodecsv.writer(f,encoding='utf8') # Write Unicode strings. w.writerow([u'English',u'Chinese']) w.writerow([u'American',u'美国人']) w.writerow([u'Chinese',u'中国人']) 

Python 3. #coding необязательно здесь, потому что по умолчанию используется UTF-8. Просто сохраните исходный файл в UTF-8. unicodecsv больше не требуется. Встроенный csv работает правильно. Документация csv говорит, чтобы открыть файл с помощью newline='' .

 #coding:utf8 import csv with open('test.csv','w',newline='',encoding='utf-8-sig') as f: w = csv.writer(f) # Write Unicode strings. w.writerow([u'English',u'Chinese']) w.writerow([u'American',u'美国人']) w.writerow([u'Chinese',u'中国人']) 

Я исправил эту проблему, используя кодировку BOM UTF-8.

 # -*- coding: utf-8-sig-*- import unicodecsv as csv import codecs import sys reload(sys) sys.setdefaultencoding("utf-8-sig") def write_csv(file,headers): resultFile =codecs.open(file, "w+", "utf-8-sig") #headers=[s.encode('utf-8') for s in headers] wr = csv.writer(resultFile, dialect='excel',delimiter=";",encoding="utf-8-sig") wr.writerow(headers) resultFile.close() headers=[""] headers.append("Command") headers.append("Vérification") write_csv(r"C:\Users\ATHENA-HDA\AppData\Local\Temp\test2.txt",headers) 
  • Открытие CSV с помощью спецификации UTF-8 через Excel
  • Как указать кодировку в .NET Interop.Excel.Workbooks.OpenText
  • Байт Заказать Отметить, чтобы читать файлы UTF-8 cvs и excel
  • импортировать ивритский файл excel с генерируемым PHP тарабарщиной
  • Есть ли способ создать строку, которая может быть вставлена ​​в Excel с общим форматированием (например, пули, внутрисетевые разрывы строк)
  • Php CSV экспортирует кодировку UTF8, вызывая неправильный формат excel
  • Как импортировать файл Excel с китайскими символами в CSV?
  • Как сохранить рабочие листы в виде файлов CSV в формате UTF-8 с помощью Excel для Mac 2011?
  • читать твиты, извлеченные с помощью python
  • MySQL Экспорт арабских / персидских символов
  • Чтение UTF-8 в Java из Excel txt export
  • Interesting Posts

    Функция без возврата не работает

    Excel – условное форматирование. Обращение к стилизованной ячейке вместо фиксированного форматирования

    Проверка ошибки или несоответствие типа vbNullString

    Как нарисовать график в excel с возрастом и его счетчиком

    Excel – Формула для создания массива значений поиска на основе критериев

    Как проверить диапазон / столбец ячеек на основе месяца и скопировать их

    как прокручивать текст в той же ячейке или переместить в excel?

    Построить формулу правильной суммы в excel

    Как установить числовое значение в ячейке, которая имеет формулу с использованием Apache POI?

    Выпадающий список валидации VBA не работает в ячейке Excel в форме VBA

    Удаление строк зависит от содержимого столбца в VBA

    Преобразование даты в Excel в Log Parser

    Граница вокруг каждой ячейки в диапазоне

    Как сделать содержимое ячейки Excel показателем другого значения

    Python: бесконечный цикл при тестировании, если ячейка пуста

    Давайте будем гением компьютера.