JavaScript — создание файла .SRT

Я сделал скрипт для редактирования субтитров в браузере. не в текстовых редакторах и т. д., поэтому я сделал все, и я нахожусь на завершающей стадии, когда я нажимаю кнопку «Сохранить», чтобы загрузить мою отредактированную версию, мой браузер автоматически загружает файл SRT, как и ожидалось, но, тем не менее, субтитры отображается как «Маленькие квадратные коробки» вместо арабского текста, который я написал и отредактировал.

Что я вижу в VLC Video Player:

SCR1

Что у меня есть в моем файле SRT:

1
00:00:05,796 --> 00:00:06,888 
چیرۆكم پێ بڵێ

2
00:00:07,048 --> 00:00:08,265 
چیرۆكم پێ بڵێ

3
00:00:08,424 --> 00:00:09,846 
چیرۆكم پێ بڵێ

Код, используемый для создания отредактированной версии субтитров:

    // Function to download data to a file
function download(data, filename, type) {
    var file = new Blob([data], {type: type});
    if (window.navigator.msSaveOrOpenBlob) // IE10+
        window.navigator.msSaveOrOpenBlob(file, filename);
    else { // Others
        var a = document.createElement("a"),
                url = URL.createObjectURL(file);
        a.href = url;
        a.download = filename;
        document.body.appendChild(a);
        a.click();
        setTimeout(function() {
            document.body.removeChild(a);
            window.URL.revokeObjectURL(url);  
        }, 0); 
    }
}

А потом:

download(all_str,"anyth.srt","text/html")

Строка all_strявляется моей новой отредактированной версией субтитров.. все они разделены новыми строками, как и версия текстового редактора.

Субтитры работают с английским и другими языками, кроме арабского.

Что я сделал, чтобы исправить это:

  • Изменил text/html на text/plain и text/plain utf-8 и text/plain charset=utf-8, но не сработало
  • Изменен тип кодировки VLC Player с Universal на utf8, но это не сработало.

Я думаю, что это как-то связано с типом кодирования, что-то, что я пропустил или не знаю? пожалуйста, заполните меня


person Community    schedule 08.05.2018    source источник
comment
Я ничего не знаю о субтитрах, но правильное значение Content-Type равно text/plain; charset=utf-8 (обратите внимание на бит ; charset=).   -  person Álvaro González    schedule 08.05.2018
comment
@ Альваро Гонсалес, вот так? text/plain charset=utf-8.. не работает   -  person    schedule 08.05.2018
comment
Пока вы сохраняете загруженный файл, ни тип MIME, ни кодировка не имеют значения. Тип MIME полезен для того, чтобы браузер знал, как обращаться со скачанным файлом: сохранять, отображать его самому или сохранять во временном файле и открывать определенным приложением. Кодировка полезна только в том случае, если браузер сам отображает файл.   -  person axiac    schedule 08.05.2018
comment
@axiac, я думаю, это проблема с кодировкой, потому что она работает с английским текстом   -  person    schedule 08.05.2018
comment
Правильно ли отображается загруженный файл, когда вы открываете его в обычном текстовом редакторе (тот же редактор, который вы используете для проверки исходного файла .srt)?   -  person axiac    schedule 08.05.2018
comment
@axiac, да .. он выглядит именно так, как и ожидалось .. но не в видеоплеере   -  person    schedule 08.05.2018


Ответы (1)


Вы все делаете правильно, однако большинство наших текущих операционных систем работают на Windows-1256. Я протестировал ваш код с этим юникодом, он работает с арабским и персидским языками:

Просто измените:

text/plain;charset=windows-1256
person excitedmicrobe    schedule 08.05.2018
comment
Излишне говорить, что Windows-1256 может не встречаться в странах, где не используется Арабский алфавит или в операционных системах, которые не поставляются корпорацией Майкрософт. Кроме того, простое объявление кодировки не меняет фактические байты. - person Álvaro González; 09.05.2018
comment
@ ÁlvaroGonzález.. Я говорю о странах Ближнего Востока.. где мы живем, и плюс кажется, что это решило проблему - person excitedmicrobe; 09.05.2018