Проблема с кодировками

Кое-кто встретился с проблемой с кодировками при загрузке внешних файлов. Что это за проблема и как с ней справиться.

Поскольку компьютеры сейчас работают на разных операционных системах, может возникнуть проблема с русскоязычным содержимым файлов при использовании в других системах. Проблемы создает Windows, в которой русский текст сохраняется в кодировке Win-1251, а в других системах (включая облачную RStudio, которая на Linux) — в кодировке UTF-8.

К чему это приводит?

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

  1. Файл не загрузится: возникнет ошибка со словами «invalid multibyte string«
  2. Файл загрузится, но русские буквы будут переведены в странные символы, например «Иван Петров» станет «Р˜РІР°РЅ Петров»

Как справиться?

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

fileEncoding = 'windows-1251'

если файл был создан в Windows, а загружаете его в другой системе, или

fileEncoding ='UTF-8'

если файл был создан в другой системе, а загружаете вы его в Windows.

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

n=read.csv2('https://1553.ru/rawdata/example1.csv')

попробуйте:

n=read.csv2('https://1553.ru/rawdata/example1.csv', fileEncoding = 'UTF-8')
n=read.csv2('https://1553.ru/rawdata/example1.csv', fileEncoding = 'windows-1251')

Одна из этих строк точно загрузит файл правильно.

Это реальные примеры, кстати. Можете их попробовать. Если у вас не облачная, а локальная версия RStudio, то вместо example1.csv нужно указать example2.csv.

Читайте также: