Язвы и грабли CSV и Excel: проблемы и решения. Excel в CSV с кодировкой UTF8 Иероглифы в экселе как исправить

Файлы и документы, созданные на компьютере, всегда имеют свою кодировку. Часто случается так, что при обмене файлами или скачивании их из интернета кодировка, в которой они созданы, не читается нашим компьютером. Причины этому могут быть разные - как отсутствие необходимой кодировки в программе, которой мы хотим открыть файл, так и просто отсутствие некоторых компонентов программы (дополнительного пакета шрифтов, например).

Ниже рассмотрим, как поменять кодировку нечитаемого файла или документа в разных программах.

Изменение кодировки на странице браузера

Для Google Chrome

  1. Выбираем меню «Настройки» → «Инструменты».
  2. Строка «Кодировка» - наводим мышью, и появляется список возможных кодировок в браузере.
  3. Выбираем для русских сайтов «Windows 1251». Если не поможет, пробуем «Автоматически».

Для Opera

  1. Нажимаем «Opera» → «Настройки»
  2. Слева меню «Веб-сайты» → поле 2 «Отображение» → «Настроить шрифты»
  3. В поле «Кодировка» выбираем «Кириллица (Windows 1251)».

Для Firefox

  1. Firefox → Настройки → Содержимое.
  2. Напротив строки «Шрифт по умолчанию» нажимаем кнопку «Дополнительно».
  3. Внизу окна выбираем «Кодировка» &rarr «Кириллица (Windows 1251)».

Изменение кодировки в Word

Рассмотрим процедуру изменения кодировки на примере Word 2010

  1. Открываем документ.
  2. Вкладка «Файл» → «Параметры».
  3. Выбираем строку «Дополнительно». В разделе «Общие» напротив строки «Подтверждать преобразование формата файла при открытии» ставим галочку. Нажимаем ОК.
  4. Далее откроется окно «Преобразование файла». Выбираем «Кодированный текст», жмем ОК.
  5. Далее в открывшемся окне отмечаем «Другая» и выбираем из списка кодировку, которая отобразит необходимый текст. В окне «Образец» можно просмотреть, как отображается текст в той или иной кодировке, выбранной нами.

Если пройденная процедура не помогла отобразить документ, можно попробовать поменять шрифт. Иногда документ может отображаться в виде «квадратиков» или других знаков, если в программе нет соответствующего шрифта.

Изменение кодировки в Excel

Рассмотрим процедуру изменения кодировки для Excel 93-2004 и 2007:

  1. Открываем нечитаемый документ с помощью программы Notepad++.
  2. Выбираем меню Encoding (Кодировка) → Конвертировать в UTF-8.
  3. Символы не изменятся, изменится только кодировка внизу экрана. Далее выбираем набор символов. Если это русский язык: Encoding → Character sets → Cyrillic → Windows-1251.
  4. Нажимаем "Сохранить". Открываем файл в Excel. Если не читается текст, пробуем повторить шаги 3-4.

Изменение кодировки текста

  1. Открываем файл в стандартном текстовом процессоре Блокнот.
  2. Нажимаем «Сохранить как».
  3. В открывшемся окне сохранения выбираем место, куда хотим сохранить файл, тип документа - текстовый, а также ставим другой тип кодировки.
  4. Сохранить.
  5. Пробуем открыть документ.

Дополнительно читайте статью

ВКонтакте Facebook Одноклассники

С переходом ко все новым версиям Windows острота проблемы существования множества кодировок русского языка почти сошла на нет

CSV является стандартом де-факто для связи между собой разнородных систем, для передачи и обработки объемных данных с «жесткой», табличной структурой. Во многих скриптовых языках программирования есть встроенные средства разбора и генерации, он хорошо понятен как программистам, так и рядовым пользователям, а проблемы с самими данными в нем хорошо обнаруживаются, как говорится, на глаз.

История этого формата насчитывает не менее 30 лет. Но даже сейчас, в эпоху повального использования XML, для выгрузки и загрузки больших объемов данных по-прежнему используют CSV. И, несмотря на то, что сам формат довольно неплохо описан в RFC, каждый его понимает по-своему.

В этой статье я попробую обобщить существующие знания об этом формате, указать на типичные ошибки, а также проиллюстрировать описанные проблемы на примере кривой реализации импорта-экспорта в Microsoft Office 2007. Также покажу, как обходить эти проблемы (в т.ч. автоматическое преобразование типов Excel-ом в DATETIME и NUMBER) при открытии.csv.

Начнем с того, что форматом CSV на самом деле называют три разных текстовых формата, отличающихся символами-разделителями: собственно сам CSV (comma-separated values — значения, разделенные запятыми), TSV (tab-separated values — значения, разделенные табуляциями) и SCSV (semicolon separated values — значения, разделенные точкой с запятой). В жизни все три могут называться одним CSV, символ-разделитель в лучшем случае выбирается при экспорте или импорте, а чаще его просто «зашивают» внутрь кода. Это создает массу проблем в попытке разобраться.

Как иллюстрацию возьмем казалось бы тривиальную задачу: импортировать в Microsoft Outlook данные из таблицы в Microsoft Excel.

В Microsoft Excel есть средства экспорта в CSV, а в Microsoft Outlook — соответствующие средства импорта. Что могло быть проще — сделал файлик, «скормил» почтовой программе и — дело сделано? Как бы не так.

Создадим в Excel тестовую табличку:

… и попробуем экспортировать ее в три текстовых формата:

Какой вывод мы делаем из этого?.. То, что здесь Microsoft называет «CSV (разделители — запятые)», на самом деле является форматом с разделителями «точка с запятой». Формат у Microsoft — строго Windows-1251. Поэтому, если у вас в Excel есть Unicode-символы, они на выходе в CSV отобразятся в вопросительные знаки. Также то, что переводами строк является всегда пара символов, то, что Microsoft тупо берет в кавычки все, где видит точку с запятой. Также то, что если у вас нет Unicode-символов вообще, то можно сэкономить на объеме файла. Также то, что Unicode поддерживается только UTF-16, а не UTF-8, что было бы сильно логичнее.

Теперь посмотрим, как на это смотрит Outlook. Попробуем импортировать эти файлы из него, указав такие же источники данных. Outlook 2007: Файл -> Импорт и экспорт… -> Импорт из другой программы или файла. Далее выбираем формат данных: «Значения, разделенные запятыми (Windows)» и «Значения, разделенные табуляцией (Windows)».

Два майкрософтовских продукта не понимают друг друга, у них напрочь отсутствует возможность передать через текстовый файл структурированные данные. Для того, чтобы все заработало, требуются «пляски с бубном» программиста.

Мы помним, что Microsoft Excel умеет работать с текстовыми файлами, импортировать данные из CSV, но в версии 2007 он делает это очень странно. Например, если просто открыть файл через меню, то он откроется без какого-либо распознавания формата, просто как текстовый файл, целиком помещенный в первую колонку. В случае, если сделать дабл-клик на CSV, Excel получает другую команду и импортирует CSV как надо, не задавая лишних вопросов. Третий вариант — вставка файла на текущий лист. В этом интерфейсе можно настраивать разделители, сразу же смотреть, что получилось. Но одно но: работает это плохо. Например, Excel при этом не понимает закавыченных переводов строк внутри полей.

Более того, одна и та же функция сохранения в CSV, вызванная через интерфейс и через макрос, работает по-разному. Вариант с макросом не смотрит в региональные настройки вообще.

Стандарта CSV как такового, к сожалению, нет, но, между тем, существует т.н. memo. Это RFC 4180 2005-го года, в котором описано все довольно толково. За неимением ничего большего, правильно придерживаться хотя бы RFC. Но для совместимости с Excel следует учесть его собенности.

  • между строками — перевод строки CRLF [на мой взгляд, им не стоило ограничивать двумя байтами, т.е. как CRLF (0×0D, 0×0A), так и CR 0×0D]
  • разделители — запятые, в конце строки не должно быть запятой,
  • в последней строке CRLF не обязателен,
  • первая строка может быть строкой заголовка (никак не помечается при этом)
  • пробелы, окружающие запятую-разделитель, игнорируются.
  • если значение содержит в себе CRLF, CR, LF (символы-разделители строк), двойную кавычку или запятую (символ-разделитель полей), то заключение значения в кавычки обязательно. В противном случае - допустимо.
  • т.е. допустимы переводы строк внутри поля. Но такие значения полей должны быть обязательно закавычены,
  • если внутри закавыченной части встречаются двойные кавычки, то используется специфический квотинг кавычек в CSV — их дублирование.

Вот в нотации ABNF описание формата:

File = record *(CRLF record) header = name *(COMMA name) record = field *(COMMA field) name = field field = (escaped / non-escaped) escaped = DQUOTE *(TEXTDATA / COMMA / CR / LF / 2DQUOTE) DQUOTE non-escaped = *TEXTDATA COMMA = %x2C DQUOTE = %x22 LF = %x0A CRLF = CR LF TEXTDATA = %x20-21 / %x23-2B / %x2D-7E

Также при реализации формата нужно помнить, что поскольку здесь нет указателей на число и тип колонок, поскольку нет требования обязательно размещать заголовок, здесь есть условности, о которых необходимо не забывать:

  • строковое значение из цифр, не заключенное в кавычки может быть воспринято программой как числовое, из-за чего может быть потеряна информация, например, лидирующие нули,
  • количество значений в каждой строке может отличаться и необходимо правильно обрабатывать эту ситуацию. В одних ситуациях нужно предупредить пользователя, в других — создавать дополнительные колонки и заполнять их пустыми значениями. Можно определиться, что количество колонок задается заголовком, а можно добавлять их динамически, по мере импорта CSV,
  • Квотить кавычки через «слэш» не по стандарту, делать так не надо.
  • Поскольку типизации полей нет, нет и требования к ним. Разделители целой и дробной частей в разных странах разные, и это приводит к тому, что один и тот же CSV, сгенрированный приложением, в одном экселе «понимается», в другом — нет. Потому что Microsoft Office ориентируется на региональные настройки Windows, а там может быть что угодно. В России там указано, что разделитель — запятая,
  • Если CSV открывать не через меню «Данные», а напрямую, то Excel лишних вопросов не задает, и делает как ему кажется правильным. Например, поле со значением 1.24 он понимает по умолчанию как «24 января»
  • Эксель убивает ведующие нули и приводит типы даже тогда, когда значение указано в кавычках. Делать так не надо, это ошибка. Но чтобы обойти эту проблему экселя, можно сделать небольшой «хак» — значение начать со знака «равно», после чего поставить в кавычках то, что необходимо передать без изменения формата.
  • У экселя есть спецсимвол «равно», который в CSV рассматривается как идентификатор формулы. То есть, если в CSV встретится =2+3, он сложит два и три и результат впишет в ячейку. По стандарту он это делать не должен.

Пример валидного CSV, который можно использовать для тестов:

Фамилия, Имя, Адрес, Город/штат, индекс, просто строка Иванов,Иван, Ленина 20, Москва, 08075, "1/3" Tyler, John,110 terrace, PA,20121, "1.24" "Петров ""Кул""", Петя,120 Hambling St., NJ,08075, "1,24" Смирнов,Вася,"7452 Street ""Near the Square"" road", York, 91234, "3-01" ,Миша,Ленинград, 00123, "03-01" "Джон ""Черная голова"", Клод",Рок,"", Маями бич,00111, "0000" Сергей,

Точно такой же SCSV:

Фамилия; Имя; Адрес; Город/штат; индекс; просто строка Иванов;Иван; Ленина 20; Москва; 08075;"1/3" Tyler; John;110 terrace; PA; 20121;"1.24" "Петров ""Кул"""; Петя;120 Hambling St.; NJ;08075;"1,24" Смирнов;Вася;"7452 Street ""Near the Square"" road"; York; 91234;"3-01" ;Миша;;Ленинград; 00123;"03-01" "Джон ""Черная голова""; Клод";Рок;""; Маями бич;00111; "0000" Сергей;;

Первый файлик, который реально COMMA-SEPARATED, будучи сохраненным в.csv, Excel-ом не воспринимается вообще.

Второй файлик, который по логике SCSV, экселом воспринимается и выходит вот что:

Ошибки Excel-я при импорте:

  1. Учлись пробелы, окружающие разделители
  2. Последний столбец вообще толком не распознался, несмотря на то, что данные в кавычках. Исключение составляет строка с «Петровым» — там корректно распозналось 1,24.
  3. В поле индекс Excel «опустил» ведущие нули.
  4. в самом правом поле последней строки пробелы перед кавычками перестали указывать на спецсимвол

Если же воспользоваться функционалом импорта (Данные -> Из файла) и обозвать при импорте все поля текстовыми, то будет следующая картина:

С приведением типов сработало, но зато теперь не обрабатываются нормально переводы строк и осталась проблема с ведущими нулями, кавычками и лишними пробелами. Да и пользователям так открывать CSV крайне неудобно.

Есть эффективный способ, как заставить Excel не приводить типы, когда это нам не нужно. Но это будет CSV «специально для Excel». Делается это помещением знака «=» перед кавычками везде, где потенциально может возникнуть проблема с типами. Заодно убираем лишние пробелы.

Фамилия;Имя;Адрес;Город/штат;индекс;просто строка Иванов;Иван;Ленина 20;Москва;="08075";="1/3" Tyler; John;110 terrace;PA;="20121";="1.24" "Петров ""Кул""";Петя;120 Hambling St.;NJ;="08075";="1,24" Смирнов;Вася;"7452 Street ""Near the Square"" road";York;="91234";="3-01" ;Миша;;Ленинград;="00123";="03-01" "Джон ""Черная голова"";Клод";Рок;"";Маями бич;="00111";="0000" Сергей;;

И вот что случаеся, если мы открываем этот файлик в экселе:

Резюмирую.

Чтобы сгенерировать такой CSV, которым можно было бы пользоваться, пользователю нужно дать возможность сделать следующие настройки перед экспортом:

  1. выбрать кодировку . Как правило, важно UTF-8, UTF-16, Windows-1251, KOI8-R. Чаще всего, других вариантов нет. Одна из них должна идти по умолчанию. В случае, если данные содержат символы, не имеющие аналогов в целевой кодировке, нужно предупреждать пользователя, что данные будут битые;
  2. выбрать разделитель между полями . Варианты — табуляция, запятая, точка с запятой. По умолчанию — точка с запятой. Не забыть, что если разделитель вводится в тексте, то будет очень непросто ввести туда табуляцию, это еще и непечатный символ;
  3. выбрать разделитель между строками (CRLF 0×0D 0×0A или CR 0×0D);
  4. выбрать разделитель целой и дробной части для числовых данных (точка или запятая).
  5. выбрать, выводить ли строку заголовка;
  6. выбрать, каким образом осуществлять квотинг спецсимволов (особенно переводов строк и кавычек). В принципе, можно отступиться от стандарта и квотировать их как \n и \", но нужно в этом случае не забыть квотировать сами \n, если они встретятся и не забыть сделать это опцией при экспорте-импорте. Но совместимость пойдет лесом, потому что любой RFC-стандартный парсер конструкцию...,"abc\«",… посчитает за ошибку;
  7. совсем в идеале — поставить галочку «для Excel» и учитывать там те нестандартности, которые внесла Майкрософт . К примеру, заменять значения числовых полей, «похожих на дату», на конструкцию ="<значение поля>«.
  8. определиться, нужно ли оставлять «хвост» из пустых разделителей , если он образуется. Например, из 20 полей только первое содержит данные, а остальные пустые. В итоге, в строке можно либо ставить после первого 19 разделителей, либо не ставить. Для больших объемов данных это может спасти миллисекунды обработки и уменьшить размер файла.

Чтобы построить хороший и удобный импортер CSV, необходимо помнить о следующем:

  1. разбор файла нужно делать по лексемам в соответствии с грамматикой выше или пользоваться хорошо зарекомендовавшими себя готовыми библиотеками (Excel работает иначе, потому с импортом проблема);
  2. предоставлять пользователю возможность выбрать кодировку (топ 4 достаточно);
  3. предоставлять пользователю возможность выбрать разделитель между полями (запятая, табуляция, точка с запятой достаточно);
  4. предоставлять пользователю возможность выбрать разделитель между строками , но кроме вариантов CR и CRLF нужно предусмотреть «CR или CRLF». Это связано с тем, что, например, Excel при экспорте таблицы с переводами строк внутри ячеек экспортирует эти переводы строк как CR, а остальные строки разделяет CRLF. При этом при импорте файла ему все равно, CR там или CRLF;
  5. предоставлять пользователю возможность выбрать разделитель между целой и дробной частей (запятая или точка);
  6. определиться с методом разбора — сначала читаем все в память, потом обрабатываем или обрабатываем строку за строкой. В первом случае может понадобиться больше памяти, во втором случае — ошибка в середине вызовет только частичный импорт, что может вызвать проблемы. Предпочительнее первый вариант.

Рауф Алиев,
заместитель технического директора Mail.Ru Group

Когда вы открываете текстовый файл в Microsoft Word или другой программе (например, на компьютере, язык операционной системы на котором отличается от того, на котором написан текст в файле), кодировка помогает программе определить, в каком виде нужно вывести текст на экран, чтобы его можно было прочитать.

В этой статье

Общие сведения о кодировке текста

Информация, которая выводится на экран в виде текста, на самом деле хранится в текстовом файле в виде числовых значений. Компьютер преобразует эти значения в отображаемые знаки, используя кодировку.

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

Различные кодировки для разных алфавитов

Сведения о кодировке, сохраняемые с текстовым файлом, используются компьютером для вывода текста на экран. Например, в кодировке "Кириллица (Windows)" знаку "Й" соответствует числовое значение 201. Когда вы открываете файл, содержащий этот знак, на компьютере, на котором используется кодировка "Кириллица (Windows)", компьютер считывает число 201 и выводит на экран знак "Й".

Однако если тот же файл открыть на компьютере, на котором по умолчанию используется другая кодировка, на экран будет выведен знак, соответствующий числу 201 в этой кодировке. Например, если на компьютере используется кодировка "Западноевропейская (Windows)", знак "Й" из исходного текстового файла на основе кириллицы будет отображен как "É", поскольку именно этому знаку соответствует число 201 в данной кодировке.

Юникод: единая кодировка для разных алфавитов

Чтобы избежать проблем с кодированием и декодированием текстовых файлов, можно сохранять их в Юникоде. В состав этой кодировки входит большинство знаков из всех языков, которые обычно используются на современных компьютерах.

Так как Word работает на базе Юникода, все файлы в нем автоматически сохраняются в этой кодировке. Файлы в Юникоде можно открывать на любом компьютере с операционной системой на английском языке независимо от языка текста. Кроме того, на таком компьютере можно сохранять в Юникоде файлы, содержащие знаки, которых нет в западноевропейских алфавитах (например, греческие, кириллические, арабские или японские).

Выбор кодировки при открытии файла

Если в открытом файле текст искажен или выводится в виде вопросительных знаков либо квадратиков, возможно, Word неправильно определил кодировку. Вы можете указать кодировку, которую следует использовать для отображения (декодирования) текста.

    Откройте вкладку Файл .

    Выберите пункт Параметры .

    Выберите пункт Дополнительно .

    Перейдите к разделу Общие и установите флажокПодтверждать преобразование формата файла при открытии .

    Примечание: Если установлен этот флажок, Word отображает диалоговое окно Преобразование файла при каждом открытии файла в формате, отличном от формата Word (то есть файла, который не имеет расширения DOC, DOT, DOCX, DOCM, DOTX или DOTM). Если вы часто работаете с такими файлами, но вам обычно не требуется выбирать кодировку, не забудьте отключить этот параметр, чтобы это диалоговое окно не выводилось.

    Закройте, а затем снова откройте файл.

    В диалоговом окне Преобразование файла выберите пункт Кодированный текст .

    В диалоговом окне Преобразование файла установите переключатель Другая и выберите нужную кодировку из списка.

    В области Образец

Если почти весь текст выглядит одинаково (например, в виде квадратов или точек), возможно, на компьютере не установлен нужный шрифт. В таком случае можно установить дополнительные шрифты.

Чтобы установить дополнительные шрифты, сделайте следующее:

    Нажмите кнопку Пуск и выберите пункт Панель управления .

    Выполните одно из указанных ниже действий.

    В Windows 7

    1. Удаление программы .

      Изменить .

    В Windows Vista

      На панели управления выберите раздел Удаление программы .

      В списке программ щелкните Microsoft Office или Microsoft Word, если он был установлен отдельно от пакета Microsoft Office, и нажмите кнопку Изменить .

    В Windows XP

      На панели управления щелкните элемент Установка и удаление программ .

      В списке Установленные программы щелкните Microsoft Office или Microsoft Word, если он был установлен отдельно от пакета Microsoft Office, и нажмите кнопку Изменить .

    В группе Изменение установки Microsoft Office нажмите кнопку Добавить или удалить компоненты и затем нажмите кнопку Продолжить .

    В разделе Параметры установки разверните элемент Общие средства Office , а затем - Многоязыковая поддержка .

    Выберите нужный шрифт, щелкните стрелку рядом с ним и выберите пункт Запускать с моего компьютера .

Совет: При открытии текстового файла в той или иной кодировке в Word используются шрифты, определенные в диалоговом окне Параметры веб-документа . (Чтобы вызвать диалоговое окно Параметры веб-документа , нажмите кнопку Microsoft Office , затем щелкните Параметры Word и выберите категорию Дополнительно . В разделе Общие нажмите кнопку Параметры веб-документа .) С помощью параметров на вкладке Шрифты диалогового окна Параметры веб-документа можно настроить шрифт для каждой кодировки.

Выбор кодировки при сохранении файла

Если не выбрать кодировку при сохранении файла, будет использоваться Юникод. Как правило, рекомендуется применять Юникод, так как он поддерживает большинство символов большинства языков.

Если документ планируется открывать в программе, которая не поддерживает Юникод, вы можете выбрать нужную кодировку. Например, в операционной системе на английском языке можно создать документ на китайском (традиционное письмо) с использованием Юникода. Однако если такой документ будет открываться в программе, которая поддерживает китайский язык, но не поддерживает Юникод, файл можно сохранить в кодировке "Китайская традиционная (Big5)". В результате текст будет отображаться правильно при открытии документа в программе, поддерживающей китайский язык (традиционное письмо).

Примечание: Так как Юникод - это наиболее полный стандарт, при сохранении текста в других кодировках некоторые знаки могут не отображаться. Предположим, например, что документ в Юникоде содержит текст на иврите и языке с кириллицей. Если сохранить файл в кодировке "Кириллица (Windows)", текст на иврите не отобразится, а если сохранить его в кодировке "Иврит (Windows)", то не будет отображаться кириллический текст.

Если выбрать стандарт кодировки, который не поддерживает некоторые символы в файле, Word пометит их красным. Вы можете просмотреть текст в выбранной кодировке перед сохранением файла.

При сохранении файла в виде кодированного текста из него удаляется текст, для которого выбран шрифт Symbol, а также коды полей.

Выбор кодировки

    Откройте вкладку Файл .

    В поле Имя файла введите имя нового файла.

    В поле Тип файла выберите Обычный текст .

    Если появится диалоговое окно Microsoft Office Word - проверка совместимости , нажмите кнопку Продолжить .

    В диалоговом окне Преобразование файла выберите подходящую кодировку.

    • Чтобы использовать стандартную кодировку, выберите параметр Windows (по умолчанию) .

      Чтобы использовать кодировку MS-DOS, выберите параметр MS-DOS .

      Чтобы задать другую кодировку, установите переключатель Другая и выберите нужный пункт в списке. В области Образец можно просмотреть текст и проверить, правильно ли он отображается в выбранной кодировке.

      Примечание: Чтобы увеличить область отображения документа, можно изменить размер диалогового окна Преобразование файла .

    Если появилось сообщение "Текст, выделенный красным, невозможно правильно сохранить в выбранной кодировке", можно выбрать другую кодировку или установить флажок Разрешить подстановку знаков .

    Если разрешена подстановка знаков, знаки, которые невозможно отобразить, будут заменены ближайшими эквивалентными символами в выбранной кодировке. Например, многоточие заменяется тремя точками, а угловые кавычки - прямыми.

    Если в выбранной кодировке нет эквивалентных знаков для символов, выделенных красным цветом, они будут сохранены как внеконтекстные (например, в виде вопросительных знаков).

    Если документ будет открываться в программе, в которой текст не переносится с одной строки на другую, вы можете включить в нем жесткие разрывы строк. Для этого установите флажок Вставлять разрывы строк и укажите нужное обозначение разрыва (возврат каретки (CR), перевод строки (LF) или оба значения) в поле Завершать строки .

Поиск кодировок, доступных в Word

Word распознает несколько кодировок и поддерживает кодировки, которые входят в состав системного программного обеспечения.

Ниже приведен список письменностей и связанных с ними кодировок (кодовых страниц).

Система письменности

Кодировки

Используемый шрифт

Многоязычная

Юникод (UCS-2 с прямым и обратным порядком байтов, UTF-8, UTF-7)

Стандартный шрифт для стиля "Обычный" локализованной версии Word

Арабская

Windows 1256, ASMO 708

Китайская (упрощенное письмо)

GB2312, GBK, EUC-CN, ISO-2022-CN, HZ

Китайская (традиционное письмо)

BIG5, EUC-TW, ISO-2022-TW

Кириллица

Windows 1251, KOI8-R, KOI8-RU, ISO8859-5, DOS 866

Английская, западноевропейская и другие, основанные на латинице

Windows 1250, 1252-1254, 1257, ISO8859-x

Греческая

Японская

Shift-JIS, ISO-2022-JP (JIS), EUC-JP

Корейская

Wansung, Johab, ISO-2022-KR, EUC-KR

Вьетнамская

Индийские: тамильская

Индийские: непальская

ISCII 57002 (деванагари)

Индийские: конкани

ISCII 57002 (деванагари)

Индийские: хинди

ISCII 57002 (деванагари)

Индийские: ассамская

Индийские: бенгальская

Индийские: гуджарати

Индийские: каннада

Индийские: малаялам

Индийские: ория

Индийские: маратхи

ISCII 57002 (деванагари)

Индийские: панджаби

Индийские: санскрит

ISCII 57002 (деванагари)

Индийские: телугу

    Для использования индийских языков необходима их поддержка в операционной системе и наличие соответствующих шрифтов OpenType.

    Для непальского, ассамского, бенгальского, гуджарати, малаялам и ория доступна только ограниченная поддержка.

Если в таблице вместо нужной информации вы увидели вопросы, иероглифы или другие непонятные знаки, это значит, вам надо разобраться, как поменять кодировку в Excel. Эта функция доступна в самом Microsoft Office. Но избавиться от проблемы можно и другими методами.

Иногда мы получаем непонятные иероглифы

Компьютер воспринимает любую информацию, как набор цифр. Поэтому у каждого печатного знака есть свой код. Он состоит из чисел и букв латинского алфавита. Символы и соответствующие им числа - это и есть кодировка.

У неё есть несколько стандартов. Например, Koi-8, Unicode, Windows-1251, ASCII. И если файл с текстом сохранён, скажем, в Кои-8, в Excel он будет неправильно отображаться в Юникоде. Так как в этих наборах одним и тем же символам приписаны разные коды.

Как поменять кодировку в программе?

Для работы с таблицей , в которой используется стандарт, не заданный по умолчанию в программе, надо изменить кодировку. Существует несколько способов.

При помощи Notepad

Если в Экселе не получается превратить «кракозябры» в нормальный текст, откройте файл в программе «Notepad++». Она распространяется бесплатно. Настройте там отображение символов, а потом продолжайте работать в Excel.

Откройте файл в программе «Notepad++»

  1. Создайте резервную копию документа . Или сохраните информацию из него в какой-нибудь другой таблице.
  2. Запустите Notepad.
  3. Перейдите в Файл - Открыть (File - Open) и укажите путь к таблице. В поле «Тип файла» поставьте «Все типы» («All types»). Или укажите конкретный формат. Таблицы имеют расширения.cvs, .xls, .xltm, xlam, .xlm. В Нотпаде текст отобразится без сетки. В нём ничего не надо редактировать.
  4. Справа внизу в строке состояния будет изображён стандарт, используемый сейчас.
  5. Откройте меню Кодировка (Encoding). Оно находится вверху окна.
  6. Нажмите «Преобразовать в UTF-8» («Convert to UTF-8»). Документ будет конвертирован в нужный формат. Этот стандарт Excel воспринимает нормально и не станет превращать в бессвязный поток странных символов.
  7. Теперь выберите, какие знаки необходимо использовать. В том же меню Encoding наведите выпадающий список. Он там один.
  8. Для русского языка выберите Кириллица - Windows-1251. Если текст, скажем, на арабском или греческом - отметьте соответствующий набор символов. В разных странах используются разные стандарты.
  9. Программа попросит подтвердить действие.
  10. Если это не помогло, попробуйте другие кириллические шрифты.
  11. Сохранять текст надо тоже в экселевском формате.

Откройте файл в utf-8

Через интерфейс программы

Вот как сменить кодировку в Excel, используя встроенные возможности:

  1. Запустите программу . Не надо открывать заполненный документ. Нужен «чистый» лист.
  2. Перейдите во вкладку «Данные» в строке меню.
  3. На панели «Получать внешние данные» нажмите «Из текста».
  4. В списке «Тип файла» (он находится рядом с кнопкой «Отмена») выберите «Все» или «Любые». Так в окне будут отображаться форматы Excel, а не только.txt.
  5. Задайте путь к таблице.
  6. Откроется мастер импорта.
  7. В поле «Формат» можете выбрать желаемый стандарт.
  8. В области «Предварительный просмотр» показано, как будет выглядеть текст с отмеченным набором символов. Можете прокручивать список и искать, какая настройка подходит.
  9. Когда подберёте нужный вариант, нажмите «Готово».

Можно использовать встроенные возможности

Как сохранить файл в определённой кодировке?

Можно сделать так, чтобы в сохранённом вами файле стояла определённая кодировка Excel.

  1. Нажмите на зелёную кнопку «Файл» (в Office 2007 надо кликнуть на логотип слева вверху).
  2. Параметры - Дополнительно.
  3. Прокрутите вниз до раздела «Общие».
  4. Кнопка «Параметры веб-документа».
  5. Вкладка «Кодировка».
  6. В поле «Сохранить документ как» укажите желаемое значение и нажмите «OK».

Ещё можно сделать так:

  1. Нажмите на «Файл» или логотип офиса.
  2. Выберите «Сохранить как…».
  3. Кликните на «Сервис». Там будет тот же самый пункт «Параметры веб-документа».

Как добавить в программы офиса новую кодировку?

Если ни один из стандартов не подошёл для вашего документа , добавьте новые.

  1. Пуск - Панель управления.
  2. «Программы и компоненты» или «Удаление программ».
  3. Нажмите на пункт Office или Excel (в зависимости от того, установлен ли у вас весь пакет продуктов Микрософт Офис или только Эксель).
  4. Кнопка «Изменить». Она над основной рабочей областью.
  5. Поставьте маркер в «Добавить или удалить» и кликните «Продолжить».
  6. Откройте ветку Общие средства - Многоязыковая поддержка.
  7. Нажмите на чёрную стрелочку рядом с нужным стандартом и включите функцию «Запускать на моём компьютере».
  8. Кликните «Продолжить» и дождитесь окончания процесса. Будут добавлены новые наборы.

В Excel можно поменять кодировку, если символы отображаются неправильно. Эта функция доступна в инструментарии программы. Но иногда используется сторонний софт.

У меня есть файл Excel, который имеет некоторые испанские символы(Тильды и т. д.) что мне нужно преобразовать в файл CSV для использования в качестве файла импорта. Однако, когда я сохраняю как CSV, он искажает "специальные" испанские символы, которые не являются символами ASCII. Кажется, что это также происходит с левыми и правыми кавычками и длинными тире, которые, как представляется, исходят от исходного пользователя, создающего файл Excel в Mac.

поскольку CSV - это просто текстовый файл, я уверен, что он может обрабатывать кодировку UTF8, поэтому я предполагая, что это ограничение Excel, но я ищу способ получить из Excel в CSV и сохранить символы, отличные от ASCII.

30 ответов

Примечание: будьте осторожны с конфиденциальными данными с Google листов.

после сохранения в CSV под Excel в командной строке ставим:

Iconv -f cp1250 -t utf-8 file-encoded-cp1250.csv > file-encoded-utf8.csv

(Не забудьте заменить cp1250 вашей кодировкой).

работает быстро и отлично подходит для больших файлов, таких как база данных почтовых кодов, которые не могут быть импортированы в GoogleDocs (предел 400.000 ячеек).

предполагая среду Windows, сохраните и работайте с файлом, как обычно, в Excel, но затем откройте сохраненный файл Excel в Gnome Gnumeric (бесплатно). Сохраните таблицу Gnome Gnumeric как CSV, которая-для меня в любом случае-сохраняет ее как UTF-8 CSV.

простой способ сделать это: скачать open office (), загрузите электронную таблицу и откройте файл excel (.xls или.xlsx). Затем просто сохраните его как текстовый CSV-файл, и откроется окно с просьбой сохранить текущий формат или сохранить как.Формат ODF. выберите "Сохранить текущий формат" и в новом окне выберите вариант, который работает лучше для вас, в соответствии с языком, на котором написан ваш файл. Для испанского языка выберите Западная Европа (Windows-1252/ WinLatin 1) и файл работает только штраф. Если выбрать Unicode (UTF-8), он не будет работать с испанским персонажей.

Я также столкнулся с той же проблемой, но для этого есть простое решение.

  1. откройте файл xlsx в Excel 2016 или выше.
  2. В "Сохранить как" выберите эту опцию: "(CSV UTF-8 (с разделителями запятыми)*.csv)"

Он работает отлично, и создается файл csv, который можно импортировать в любое программное обеспечение. Я импортировал этот csv-файл в свою базу данных SQLITE, и он отлично работает со всеми символами unicode.

Я написал небольшой скрипт Python, который может экспортировать листы в UTF-8.

вам просто нужно предоставить файл Excel в качестве первого параметра, а затем листы, которые вы хотите экспортировать. Если листы не предоставлены, сценарий экспортирует все листы, присутствующие в файле Excel.

#!/usr/bin/env python # export data sheets from xlsx to csv from openpyxl import load_workbook import csv from os import sys reload(sys) sys.setdefaultencoding("utf-8") def get_all_sheets(excel_file): sheets = workbook = load_workbook(excel_file,use_iterators=True,data_only=True) all_worksheets = workbook.get_sheet_names() for worksheet_name in all_worksheets: sheets.append(worksheet_name) return sheets def csv_from_excel(excel_file, sheets): workbook = load_workbook(excel_file,use_iterators=True,data_only=True) for worksheet_name in sheets: print("Export " + worksheet_name + " ...") try: worksheet = workbook.get_sheet_by_name(worksheet_name) except KeyError: print("Could not find " + worksheet_name) sys.exit(1) your_csv_file = open("".join(), "wb") wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL) for row in worksheet.iter_rows(): lrow = for cell in row: lrow.append(cell.value) wr.writerow(lrow) print(" ... done") your_csv_file.close() if not 2 <= len(sys.argv) <= 3: print("Call with " + sys.argv + " ") sys.exit(1) else: sheets = if len(sys.argv) == 3: sheets = list(sys.argv.split(",")) else: sheets = get_all_sheets(sys.argv) assert(sheets != None and len(sheets) > 0) csv_from_excel(sys.argv, sheets)

Похожие публикации