Недавно я добавил кнопку CSV-загрузки, которая берет данные из базы данных (Postgres) из массива с сервера (Ruby on Rails) и превращает его в CSV файл на стороне клиента (Javascript, HTML5). В настоящее время я тестирую CSV файл, и я сталкиваюсь с некоторыми проблемами с кодировкой.
Когда я просматриваю файл CSV с помощью "less", файл выглядит нормально. Но когда я открываю файл в Excel или TextEdit, я начинаю видеть странные символы, например
â € ", â €, â € œ
появится в тексте. В основном, я вижу символы, которые описаны здесь: http://digwp.com/2011/07/clean-up-weird-characters-in-database/
Я читал, что такая проблема может возникнуть, когда параметр кодирования базы данных установлен неверным. НО, база данных, которую я использую, настроена на использование кодировки UTF8. И когда я отлаживаю коды JS, которые создают CSV файл, текст выглядит нормальным. (Это может быть способность Chrome и меньше возможностей)
Я чувствую себя расстроенным, потому что единственное, что я изучаю в своем онлайн-поиске, это то, что может быть много причин, по которым кодирование не работает, я не уверен, какая часть виновата (так извините, множество вещей), и ничто, что я пробовал, не пролило свет на мою проблему.
Для справки, здесь фрагмент JavaScript, который создает файл CSV!
$(document).ready(function() {
var csvData = <%= raw to_csv(@view_scope, clicks_post).as_json %>;
var csvContent = "data:text/csv;charset=utf-8,";
csvData.forEach(function(infoArray, index){
var dataString = infoArray.join(",");
csvContent += dataString+ "\n";
});
var encodedUri = encodeURI(csvContent);
var button = $('<a>');
button.text('Download CSV');
button.addClass("button right");
button.attr('href', encodedUri);
button.attr('target','_blank');
button.attr('download','<%=title%>_25_posts.csv');
$("#<%=title%>_download_action").append(button);
});