Генерация CSV-файлов из Javascript с кодировкой UTF-8 и строк, содержащих разрывы строк - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть программа на JavaScript, которая может экспортировать таблицы данных HTML в CSV.

Эти данные имеют кодировку UTF-8, так что они могут содержать самые разные наборы символов (английский, французский, арабский, японский ...).

Содержимое отдельных ячеек втаблицы данных часто содержат разрывы строк

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

function OutputFilter (Text)
{
Text = Text.replace (/<br>/g  , "\n"); // replace line breaks with new line
from = new RegExp ("<[^>]+>","g"); // replace any remaining HTML tags
to = "" ;
Text = Text.replace (from,to);
Text = Text.replace (/&quot;/g, '"'  ); // unescape all double quotes
Text = Text.replace (/&apos;/g, "'"  ); // unescape all single quotes
Text = Text.replace (/&lt;/g  , "<"  ); // unescape all <
Text = Text.replace (/&gt;/g  , ">"  ); // unescape all >
Text = Text.replace (/&amp;/g , "&"  ); // unescape all ampersands
var allQuotes = new RegExp ('"',"g"); //Text = Text.replace (/"/g, '""');
var twoQuotes = '""' ;
Text = Text.replace (allQuotes, twoQuotes); // duplicate all double quotes 
var commaInText   = Text.indexOf ("," ) != -1;
var quoteInText   = Text.indexOf ('"' ) != -1;
var newlineInText = Text.indexOf ("\n") != -1;
var commasRequired = commaInText || quoteInText || newlineInText ;
if (commasRequired) {return '"' + Text + '"' } else {return Text};
};

Теперь я уверен, что движусь в правильном направлении.потому что Mac Numbers правильно читает выходные CSV (или, как я думаю, их следует читать).

Однако Excel для Mac ведет себя по-разному, как показано ниже:

  1. Если дважды щелкнуть, чтобы открытьфайл, он распознает преобразованные разрывы строк (в "\ n"), но не распознает кодировку UTF-8
  2. Если я импортирую данные с помощью диалога File / Import, он распознает кодировку UTF-8, но не распознает преобразованные переводы строк.

Я рад просто использовать MacOS Numbers, но поскольку полмира или больше используют Excel, я хотел бы иметь возможность создавать файл CSVe, который работал в Excel.

Вся помощь с благодарностью получена Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...