Проблема с турецким символом JSON в EXCEL

Я получил данные JSON из MySQL. Хорошо смотрится с турецкими персонажами. Но когда я пытаюсь экспортировать этот JSON, чтобы преуспеть как csv, турецкие символы меняются.

Я пытаюсь экспортировать с этим; http://jsfiddle.net/JXrwM/11407/

function JSONToCSVConvertor(JSONData, ReportTitle, ShowLabel) {
    var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;


    var CSV = 'sep=,' + '\r\n\n';

    if (ShowLabel) {
        var row = "";

        for (var index in arrData[0]) {

            row += index + ',';
        }

        row = row.slice(0, -1);

        CSV += row + '\r\n';
    }

    for (var i = 0; i < arrData.length; i++) {
        var row = "";

        for (var index in arrData[i]) {
            row += '"' + arrData[i][index] + '",';
        }

        row.slice(0, row.length - 1);

        CSV += row + '\r\n';
    }

    if (CSV == '') {        
        alert("Invalid data");
        return;
    }   

    var fileName = "MyReport_";
    fileName += ReportTitle.replace(/ /g,"_");   

    var uri = 'data:text/html;charset=ISO-8859-9,' + escape(CSV);


    var link = document.createElement("a");    
    link.href = uri;

    link.style = "visibility:hidden";
    link.download = fileName + ".csv";

    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
}

person hbaltuntel    schedule 27.07.2018    source источник
comment
Это то же самое, что и это - stackoverflow.com/questions/ 44330730/   -  person Vityata    schedule 27.07.2018
comment
Не то же самое. Я могу изменить символы ö на o, но. Мне нужно ö в Excel.   -  person hbaltuntel    schedule 27.07.2018
comment
Обычно я меняю кодировку, используя функцию notepad++ encoding > Encode in UTF-8, then Save as для работы с символами UTF. Я не уверен, как это сделать с помощью scripts/java/vba .   -  person p._phidot_    schedule 28.07.2018


Ответы (1)


Похоже, функция JSONToCSVConvertor, которую вы нашли, экспортирует csv в определенный набор символов ISO-8859-9 (или Latin 5). Чтобы Excel правильно импортировал это, вы не должны открывать его двойным щелчком, а использовать:

  • На компьютере с Windows нажмите «Файл > Создать» в Excel.
  • Перейдите на вкладку «Данные».
  • Нажмите «Из текста». Выберите CSV-файл

Excel отобразит «Мастер импорта текста».

  • Выберите радиокнопку "Разделенные"
  • В поле "Происхождение файла" выберите "28599 : Турецкий (ISO)". (вы также можете попробовать "1254 : турецкий (Windows)")
  • Нажмите кнопку «Далее >»
  • Установите флажок «Запятая», поскольку этот символ используется в файле csv, созданном функцией JSONToCSVConvertor.
  • Нажмите «Готово»
  • Нажмите «ОК»

Если бы вы изменили функцию для создания более часто используемого UTF-8, заменив эту строку

var uri = 'data:text/html;charset=ISO-8859-9,' + escape(CSV);

в

var uri = 'data:text/csv;charset=utf-8,' + escape(CSV);

вы можете импортировать таким же образом, только затем выберите "65001 : Unicode (UTF-8)" для поля "Происхождение файла"

Надеюсь это поможет

person Theo    schedule 29.07.2018