Text :: CSV поддерживает кодировки - PullRequest
7 голосов
/ 10 мая 2019

Где я могу найти кодировки, поддерживаемые Text :: CSV? «Latin1» не поддерживается или синтаксис неверен?

Это не удалось:

use Text::CSV;

spurt '/tmp/test.csv', 'ID;Gerät;Nr', :enc<latin1>;

slurp '/tmp/test.csv', :enc<latin1>; #ok

say csv :in</tmp/test.csv>, :encoding<latin1>, :sep_char<;>; 
#Malformed UTF-8 error

Ответы [ 2 ]

7 голосов
/ 11 мая 2019

В коде произошла ошибка: объявленная кодировка фактически не использовалась при открытии файла. Я создал проблему в модуле, и этот запрос извлечения, чтобы исправить это

5 голосов
/ 10 мая 2019

Похоже, что документация для Text::CSV требует, чтобы значение, переданное в encoding, было таким же, как принятое параметром encoding функции open .

Список возможных значений приведен в документации метода IO::Handle::encoding :

Допустимые значения для кодирования не зависят от регистра.Доступные кодировки зависят от реализации и серверной части.На Rakudo MoarVM поддерживаются следующие параметры:

  • utf8
  • utf16
  • utf16le
  • utf16be
  • utf8-c8
  • iso-8859-1
  • windows-1251
  • windows-1252
  • windows-932
  • ascii

Кодировка по умолчанию - utf8, которая подвергается нормализации в Unicode NFC (форма нормализации каноническая).В некоторых случаях вы можете убедиться, что нормализация не производится;для этого вы можете использовать utf8-c8.Перед использованием utf8-c8 прочтите Unicode: Filehandles и I / O для получения дополнительной информации о utf8-c8 и NFC.

По состоянию на Rakudo также поддерживается 2018.04 windows-932, который является вариантом ShiftJIS.

Реализация может также выбрать поддержку псевдонимов, например, Rakudo допускает псевдонимы latin-1 для iso-8859-1 кодировки и пунктирной версии utf: utf-8 и utf-16.

...