2011-12-18 1 views
0

я использую что-то вроде этого на странице UTF-8:Javascript URI данных кодировки при сохранении

var data = "a\tb\tc\r\nd\te\tf"; 
window.location.href = "data:text/csv;charset=utf-8," + encodeURIComponent(data); 

, чтобы заставить браузер загрузить текст и сохранить его. Я отлично работаю, за исключением того, что когда я открываю файл в excel, он не открывается правильно (он не читает разделитель или арабские символы). Мне нужно «импортировать данные», чтобы указать, что файл UTF-8, когда я это делаю это работает правильно ... Когда я открываю файл в блокноте и сохраняю его в unicode ... он работает правильно. Есть ли способ заставить его сохранять в Юникоде с самого начала? или сделать файл csv открытым в excel.

Я попытался изменить его на «charset = utf-16», но это не сработало.

PS: Я не могу изменить набор символов страницы.

Любая помощь приветствуется. Благодаря

ответ

1

Что ваш код JS производит это

a b c 
d e f 

Но действительный должен быть

a,b,c 
d,e,f 

в коде

var data = "a,b,c\r\nd,e,f"; 

или та б-разделителями формат

a b c 
d e f 

в коде

var data = "a\tb\tc\r\nd\te\tf"; 

CSV короткий из значений, разделенных запятыми

+0

Я не могу использовать запятую, потому что в ней есть значения чисел с запятыми. – AhHatem

+0

И я могу использовать ";" он будет отделен правильно, но арабские символы не будут прочитаны. – AhHatem

+0

@AhHatem вы можете использовать разделенные вкладками (см. Часть 2 моего ответа), и о чтении, уверены ли вы в проблеме сохранения и не считывания данных UTF16? –

2

Это то, что вам нужно, небольшой аддон:

'data:text/csv;charset=utf8,' + '\uFEFF' + encodeURIComponent(csv) 

этот аддон ('\ uFEFF') делает его реальным "UTF-8", без него было бы: «UTF -8 без спецификации "

+0

Спасибо :) это было действительно полезно – Gabriel