Два вопроса в одном, не уверен, разрешено ли это, но они напрямую связаны с одним и тем же кодом.Я извлекаю строку CSV в виде HTTP-ответа в Javascript - кажется, эта строка представлена в кодировке UTF-16, как, например, вместо «».
a) Как я могупреобразовать это в UTF-8 в ванильном Javascript?
Как только это будет сделано, как мне б) преобразовать многострочный CSV в 2D-массив в ванильном Javascript?
Спасибо!
[ОБНОВЛЕНИЕ]
Основываясь на указателях anqooqie, я использую следующий подход для перекодирования строки:
Хорошо, ясно - так что если честно, я пошелнемного другим способом (так как функция reencode у меня не сработала и вызвала общий код ошибки), а теперь сделайте следующее:
var O = new ActiveXObject('ADODB.Stream');
O.Type = 2;
O.Open;
O.Charset = 'ISO-8859-1';
O.LineSeparator = 10;
O.WriteText (csvStr);
O.Position = 0;
O.Charset = 'UTF-8';
И это работает отлично и в значительной степени за долю секунды (дажехотя это CSV строки 35K).Теперь, если я хочу поместить его обратно в csvStr, я бы сделал
csvStr = O.ReadText
, но на это уходит много времени - это ожидаемое или я делаю что-то не так?
Для помещения в2D массив, я делю на LineSeparator, а затем зацикливаю с помощью регулярных выражений, что, кажется, работает.
var A = new Array
A.push(csvStr[0].match(/"[^"]*"|[^,]+/g))
Огромная задержка readText беспокоит меня, тем более, что WriteText очень быстрый.Любая помощь приветствуется.