1

Я создаю файл CSV с кодировкой UTF-8.

Он отображает китайские символы правильно, если я открываю его с помощью Notepad++.

Он отображает китайские символы правильно, если я открою его с помощью блокнота.

Но, если я открою его с помощью Excel, я вижу значения мусора.

Если я открою его с помощью Блокнота и нажму Control+S, закрою файл и снова открою в Excel, он отлично отобразит символы.

Любые подсказки, что происходит здесь?

Я также попытался создать нормальный CSV-файл с кодировкой GB2312. Затем я использовал Unix команду iconv, чтобы преобразовать файл из "GB2312" в "UTF-8"

Эта команда удаляет все китайские символы и показывает только английские символы. Так что это не решение проблемы.

Пожалуйста, предложите.

Редактировать -

Он не показывает значение мусора, но показывает кодировку ANSI. Почему он выбирает кодировку ANSI по умолчанию. И почему после открытия того же файла в Notepad/Notepad++ он открывается с UTF-8.

Кроме того, почему просто Control+s делает его правильно открыть в Excel.

2 ответа2

3

В Linux UTF8 обычно сохраняется без спецификации, поскольку спецификация UTF8 является необязательной, поэтому приложения могут иметь проблемы с определением правильного кодирования. Вы можете попытаться сохранить их в UTF8 с помощью спецификации или использовать вместо нее UTF16.

0

Я знал о последовательности спецификации с кодировкой UTF-8, но не знал, как добавить ее в мой файл.

Теперь последовательность спецификаций 0xEF, 0xBB, 0xBF, поэтому я попытался добавить это как обычный текст, но это не сработало. Итак, я добавил значения ASCII в CSV, и это работает.

Значение ASCII =

new.text = chr $(239) & chr $(187) & chr $(191) | Объединенный

Просто добавьте это как 1-ую строку, и это работает!

Спасибо Крис за ваше предложение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .