Как узнать кодировку текста: Как проверить кодировку в текстовом файле? / Общая / SocialKit

python — Узнать кодировку файла

Задать вопрос

Вопрос задан

Изменён 1 год 9 месяцев назад

Просмотрен 13k раз

Есть файл не понятно в какой кодировке, нужно определить кодировку, написал вот такой вариант, но уверен что есть способ определения кодировки на много проще, подскажите.

# какой то файл скачанный с интернета в неизвестной кодировке.
open('test.txt', 'w', encoding='cp500').write('Hello\n')
# сюда можно впихнуть все известные кодировки.
encoding = [
'utf-8',
'cp500',
'utf-16',
'GBK',
'windows-1251',
'ASCII',
'US-ASCII',
'Big5'
]
correct_encoding = ''
for enc in encoding:
    try:
        open('test.txt', encoding=enc).
read() except (UnicodeDecodeError, LookupError): pass else: correct_encoding = enc print('Done!') break print(correct_encoding)
  • python

0

Можно использовать chardet:

from chardet.universaldetector import UniversalDetector
detector = UniversalDetector()
with open('test.txt', 'rb') as fh:
    for line in fh:
        detector.feed(line)
        if detector.done:
            break
    detector.close()
print(detector.result)

3

Все очень просто.

with open(file_path, "r") as f:
    print(f)

В выводе будет информация об объекте файла в том числе и кодировка.

3

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Работа с текстом.

Как правильно определить кодировку файла

Давайте узнаем, что такое кодировка файла. Говоря проще, кодировкой считается набор байтовых символов, который соответствует буквенному алфавиту в определенном языке. Для каждого языка существует своя определенная последовательность таких знаков кодирования. Иногда возникает потребность определить кодировку. Рассмотрим это на примере текстового документа.

Что нужно

Набор определенных программных средств. Для начала достаточно приложений типа Word, KWrite, браузера Firefox и средства распознавания – enca.

Определить кодировку файла можно при помощи универсального редактора Microsoft Word. Прежде, его нужно проинсталлировать из пакета Office. Когда приложение будет установлено, и сможет открываться с помощью иконки в виде символа W на рабочем столе, переходим к следующему шагу.

Следующий этап распознавания

Через навигационную панель приложения по очереди откройте пункты «Файл» — «открыть». То же самое можно сделать, задействовав комбинацию клавиатуры Ctrl+O.

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

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

Как определить кодировку посредством KWrite

Кроме препроцессора для обработки текста, Word, существуют и другие функциональные утилиты. Одна из них — KWrite (аналог для unix-систем). Чтобы вы не путались, распишу по пунктам задачу «определить кодировку документа в KWrite».

  1. Загрузка в приложение файла с расширением .txt.
  2. Перебор кодировок до тех пор, пока одна из них не окажется подходящей.
  3. Чтобы выполнить пункт 2, перейдите к опции tools в меню encoding.

Браузер Mozilla Firefox, цель та же – определить кодировку

Принцип примерно тот же, что и в утилитах для работы с текстом. Запускаем проинсталлированный браузер на выполнение, а если он не установлен – скачиваем инсталлятор с mozilla.org.

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

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

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

Специализированное ПО – работаем с enca

Существует и ряд вспомогательных электронных средств, дающих возможность определить кодировку неформатированного текста.

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

Чтобы вывести листинг языков распознавания, выполните команду enca —list languages, используя терминал.

Если нужно определить кодировку текстового файла после ключа (g), введите его название, а после опции (L) примерно таким же образом введите язык распознавания:

enca -L russian -g /home/vic/temp/myfile.txt.

Подытожим сказанное о кодировке

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

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

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

Получить кодировку файла в Windows

спросил

Изменено 9 месяцев назад

Просмотрено 525 тысяч раз

На самом деле это не вопрос программирования, существует ли командная строка или инструмент Windows (Windows 7) для получения текущей кодировки текстового файла? Конечно, я могу написать небольшое приложение на C#, но я хотел знать, есть ли что-то уже встроенное?

  • окна
  • кодировка

3

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

Сохранить как… «.
Это будет выглядеть так:

Какой бы ни была кодировка, выбранная по умолчанию, это текущая кодировка файла.
Если это UTF-8, вы можете изменить его на ANSI и нажать «Сохранить», чтобы изменить кодировку (или наоборот).

Я понимаю, что существует множество различных типов кодировок, но это было все, что мне было нужно, когда мне сообщили, что наши экспортные файлы были в UTF-8 и для них требовался ANSI. Это был одноразовый экспорт, поэтому Блокнот мне подошёл.

К вашему сведению: Насколько я понимаю, я думаю, что « Unicode » (как указано в Блокноте) является неправильным названием для UTF-16.
Подробнее об опции Блокнота « Unicode »: Windows 7 — UTF-8 и Unicdoe

13

Если на вашем компьютере с Windows есть «git» или «Cygwin», перейдите в папку, в которой находится ваш файл, и выполните команду:

 файл *
 

Это даст вам информацию о кодировке всех файлов в этой папке.

4

Файл инструмента командной строки (Linux) доступен в Windows через GnuWin32:

http://gnuwin32.sourceforge.net/packages/file.htm

Если у вас установлен git, он находится в C: \Program Files\git\usr\bin.

Пример:

    C:\Users\SH\Downloads\SquareRoot>файл *
    _UpgradeReport_Files; каталог
    Отлаживать; каталог
    продолжительность.ч; Текст программы ASCII C++ с разделителями строк CRLF
    ипч; каталог
    основной.cpp; Текст программы ASCII C с разделителями строк CRLF
    Точность.txt; Текст ASCII с разделителями строк CRLF
    Выпускать; каталог
    Скорость.txt; Текст ASCII с разделителями строк CRLF
    SquareRoot.sdf; данные
    SquareRoot.sln; Текст UTF-8 Unicode (с спецификацией), с разделителями строк CRLF
    SquareRoot.sln.docstates.suo; PCX вер. 2.5 данные изображения
    SquareRoot.suo; Документ CDF V2 поврежден: невозможно прочитать сводную информацию
    SquareRoot.
vcproj; Текст XML-документа SquareRoot.vcxproj; Текст XML-документа SquareRoot.vcxproj.фильтры; Текст XML-документа SquareRoot.vcxproj.пользователь; Текст XML-документа методы квадратного корня.ч; Текст программы ASCII C с разделителями строк CRLF Журнал обновления.XML; Текст XML-документа C:\Users\SH\Downloads\SquareRoot>файл --mime-encoding * _UpgradeReport_Files; бинарный Отлаживать; бинарный продолжительность.ч; us-ascii ипч; бинарный основной.cpp; us-ascii Точность.txt; us-ascii Выпускать; бинарный Скорость.txt; us-ascii SquareRoot.sdf; бинарный SquareRoot.sln; утф-8 SquareRoot.sln.docstates.suo; бинарный SquareRoot.suo; Документ CDF V2 поврежден: не удается прочитать сводную информацию. SquareRoot.vcproj; us-ascii SquareRoot.vcxproj; утф-8 SquareRoot.vcxproj.фильтры; утф-8 SquareRoot.vcxproj.пользователь; утф-8 методы квадратного корня.ч; us-ascii Журнал обновления.XML; us-ascii

7

Еще один полезный инструмент: https://archive. codeplex.com/?p=encodingchecker EXE можно найти здесь

9

Установите git (в Windows вы должны использовать консоль git bash). Тип:

 файл --mime-encoding *
 

для всех файлов в текущем каталоге или

 file --mime-encoding */*
 

для файлов во всех подкаталогах

1

Вот мой способ определить семейство текстовых кодировок Unicode с помощью BOM. Точность этого метода низкая, так как этот метод работает только с текстовыми файлами (в частности, с файлами Unicode) и по умолчанию используется

ascii , когда нет спецификации (как и в большинстве текстовых редакторов, по умолчанию будет UTF8 , если вы хотите соответствуют HTTP/веб-экосистеме).

Обновление 2018 : Я больше не рекомендую этот метод.

feff’ {возврат ‘utf32’} по умолчанию {возврат ‘ascii’} } } каталог ~\Documents\WindowsPowershell -File | выберите Имя,@{Имя=’Кодировка’;Выражение={Get-FileEncoding $_.

FullName}} | футов -Авторазмер

Рекомендация: Это может работать достаточно хорошо, если dir , ls или Get-ChildItem проверяет только известные текстовые файлы и когда вы ищете только «плохие кодировки» из известного списка инструментов. (т. е. SQL Management Studio по умолчанию использует UTF16, что сломало GIT auto-cr-lf для Windows, которое использовалось по умолчанию в течение многих лет.)

8

Простым решением может быть открытие файла в Firefox.

  1. Перетащите файл в Firefox
  2. Нажмите Ctrl+I, чтобы открыть информацию о странице

и кодировка текста появится в окне «Информация о странице».

Примечание: Если файл не в формате txt, просто переименуйте его в txt и повторите попытку.

П.С. Для получения дополнительной информации см. эту статью.

2

Я написал ответ №4 (на момент написания). Но в последнее время я установил git на все свои компьютеры, поэтому теперь я использую решение @Sybren. Вот новый ответ, который делает это решение удобным из powershell (без помещения всего git/usr/bin в PATH, что для меня слишком много беспорядка).

Добавьте это в свой профиль .ps1 :

 $global:gitbin = 'C:\Program Files\Git\usr\bin'
Установить псевдоним file.exe $gitbin\file.exe
 

И используется как: file.exe --mime-encoding * . Вы должны включить .exe в команду, чтобы псевдоним PS работал.

Но если вы не настроите свой профиль PowerShell. и сохраните его в ~\Documents\WindowsPowerShell . Безопасно использовать на компьютере без git, но выдаст предупреждение, если git не найден.

.exe в команде так же, как я использую C:\WINDOWS\system32\where.exe из powershell; и многие другие команды командной строки ОС, которые «по умолчанию скрыты» в PowerShell, *пожал плечами*.

4

вы можете просто проверить это, открыв свой git bash в папке с файлом, а затем выполнив команду file -i file_name

пример

 user filesData
$ файл -i data.csv
data.csv: текст/csv; кодировка = utf-8
 

Некоторый код C здесь для надежного обнаружения ascii, bom и utf8: https://unicodebook.readthedocs.io/guess_encoding.html

Только ASCII, UTF-8 и кодировки с использованием BOM (UTF-7 с BOM, UTF-8 с BOM, UTF-16 и UTF-32) имеют надежные алгоритмы для получения кодировки документа. Для всех других кодировок вы должны доверять эвристике, основанной на статистике.

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

Powershell-версия ответа С# от: Эффективный способ найти кодировку любого файла. Работает только с подписями (boms).

 # get-encoding.ps1
param([Parameter(ValueFromPipeline=$True)] $filename)
начинать {
  # установить текущую директорию . net
  [Среда]::CurrentDirectory = (pwd).path
}
процесс {
  $reader = [System.IO.StreamReader]::new($filename,
    [System.Text.Encoding]::default,$true)
  $Peek = $reader.Peek()
  $кодирование = $reader.currentencoding
  $reader.close()
  [pscustomobject]@{Name=split-path $filename -leaf
                BodyName=$encoding.BodyName
                EncodingName=$encoding.EncodingName}
}
.\get-encoding chinese8.txt
Имя Имя Тела EncodingName
---- -------- ------------
chinese8.txt utf-8 Юникод (UTF-8)
получить дочерний файл | .\получить кодировку
 

1

Ищете решение Node.js/npm? Попробуйте кодировку-проверку:

 npm install -g encoding-checker
 

Использование

 Использование: encoding-checker [-p шаблон] [-i кодировка] [-v]
 
Опции:
  --help Показать справку [логическое значение]
  --version Показать номер версии [логическое значение]
  --pattern, -p, -d [по умолчанию: "*"]
  --игнорировать-кодирование, -i [по умолчанию: ""]
  --verbose, -v [по умолчанию: ложь]
 

Примеры

Получить кодировку всех файлов в текущем каталоге:

 encoding-checker
 

Вернуть кодировку всех md файлов в текущем каталоге:

 encoding-checker -p "*. md"
 

Получить кодировку всех файлов в текущем каталоге и его подпапках (для огромных папок это займет некоторое время; по-видимому, не отвечает):

 encoding-checker -p "**"
 

Дополнительные примеры см. в документе npm или в официальном репозитории.

0

Подобно решению, указанному выше, для Блокнота, вы также можете открыть файл в Visual Studio, если вы его используете. В Visual Studio вы можете выбрать «Файл > Дополнительные параметры сохранения…»

В поле со списком «Кодировка:» указано, какая кодировка в данный момент используется для файла. В нем указано гораздо больше текстовых кодировок, чем в Блокноте, поэтому он полезен при работе с различными файлами со всего мира и чем угодно еще.

Как и в Блокноте, вы также можете изменить кодировку из списка параметров, а затем сохранить файл, нажав «ОК». Вы также можете выбрать нужную кодировку с помощью параметра «Сохранить с кодировкой. ..» в диалоговом окне «Сохранить как» (щелкнув стрелку рядом с кнопкой «Сохранить»).

2

Единственный способ, который я нашел для этого, это VIM или Notepad++.

1

EncodingChecker

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

Для работы программы проверки кодировки файлов требуется .NET 4 или выше.

Зарегистрируйтесь или войдите

Зарегистрироваться через Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Как проверить кодировку файла CSV

спросил

Изменено 10 месяцев назад

Просмотрено 257 тысяч раз

У меня есть файл CSV, и я хочу понять его кодировку. Есть ли пункт меню в Microsoft Excel, который может помочь мне обнаружить его

ИЛИ мне нужно использовать языки программирования, такие как C # или PHP, чтобы вывести его.

  • csv
  • кодировка

1

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

8

В системах Linux вы можете использовать команду file . Это даст правильную кодировку

Пример:

 файл blah.csv
 

Вывод:

 blah.csv: текст ISO-8859 с очень длинными строками
 

3

Если вы используете Python, просто используйте функцию print(), чтобы проверить кодировку CSV-файла. Например:

 с open('file_name.csv') как f:
    печать (е)
 

Вывод примерно такой:

 <_io.TextIOWrapper name='file_name.csv' mode='r' encoding='utf8'>
 

8

Вы также можете использовать библиотеку chardet python

 # установить библиотеку chardet
!pip установить чардет
# импортируем библиотеку charde
импортировать чарде
# используем метод обнаружения, чтобы найти кодировку
# 'rb' означает, что файл читается как двоичный
с open("test.csv", 'rb') в виде файла:
    печать (chardet.detect (file.read ()))
 

Использовать charde https://github.com/chardet/chardet (документация короткая и легко читаемая).

Установите python, затем pip установите chardet, наконец, используйте команду командной строки.

Тестировал под GB2312, довольно точно. (Убедитесь, что у вас есть по крайней мере несколько символов, образец с одним символом может легко выйти из строя).

файл , как видите, ненадежен.

2

Или вы можете выполнить в консоли Python или в Jupyter Notebook:

 импорт CSV
данные = открыть ("файл.csv", "r")
данные
 

Вы увидите информацию об объекте данных следующим образом:

 <_io.TextIOWrapper name='arch.csv' mode='r' encoding='cp1250'>
 

Как видите, он содержит информацию о кодировке.

В Python вы можете попробовать…

 из encodings.aliases импортировать псевдонимы
псевдонимы = установить (псевдонимы. значения ())
для кодирования в наборе (aliases.values()):
    пытаться:
        df=pd.read_csv("test.csv", кодировка=кодировка)
        печать('успешно', кодировка)
    кроме:
        проходить
 

Файлы CSV не имеют заголовков, указывающих на кодировку.

Вы можете только догадываться, глядя на:

  • платформа/приложение, на котором был создан файл
  • байт в файле

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

 мороженое = '🍦'
импортировать CSV
с open('test.csv', 'w') как f:
    wf = csv.write(f)
    wf.writerow(['мороженое', мороженое])
импортировать чарде
с open('test.csv', 'rb') как f:
    печать (chardet.detect (f.read ()))
{'кодировка': 'Windows-1254', 'достоверность': 0,3864823918622268, 'язык': 'Турецкий'}
 

Это дает UnicodeDecodeError при попытке прочитать файл с этой кодировкой.

Кодировка по умолчанию на Mac — UTF-8. Это явно включено здесь, но в этом даже нет необходимости … но в Windows это может быть.

 с open('test.csv', 'r', encoding='utf-8') как f:
    печать (f.read())
мороженое,🍦
 

Команда file также подобрала этот

 файл test.csv
test.csv: текст Unicode UTF-8 с разделителями строк CRLF.
 

Мой совет в 2021 году, если автоматическое определение пойдет не так: попробуйте UTF-8 , прежде чем прибегать к chardet .

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *