Проблема с кодировками
Кое-кто встретился с проблемой с кодировками при загрузке внешних файлов. Что это за проблема и как с ней справиться.
Поскольку компьютеры сейчас работают на разных операционных системах, может возникнуть проблема с русскоязычным содержимым файлов при использовании в других системах. Проблемы создает Windows, в которой русский текст сохраняется в кодировке Win-1251, а в других системах (включая облачную RStudio, которая на Linux) — в кодировке UTF-8.
К чему это приводит?
Если файл создан в одной системе, а загружается в другой, и при этом его содержимое содержит русские (или какие-то нелатинские) буквы, то может произойти следующее:
- Файл не загрузится: возникнет ошибка со словами «invalid multibyte string«
- Файл загрузится, но русские буквы будут переведены в странные символы, например «Иван Петров» станет «Рван Петров»
Как справиться?
Если что-то такое происходит, нужно прямо указать кодировку исходного файла. В функцию загрузки нужно добавить:
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.