Preservando caracteres de nueva línea en los datos: texto URI

Tengo un botón en mi extensión que activa el siguiente código:

chrome.tabs.create({url: 'data:text;base64,'+btoa(data), active:false});

Esto dispara una descarga de mi cadena (datos), como esperaba. Desafortunadamente, parece estar quitando caracteres de nueva línea.

He intentado otros métodos de codificación, incluyendo utf-8 y elencodeUri() función. También intenté cambiar el mimetype adata:text/plain, pero eso simplemente se abre en una nueva pestaña (con los caracteres de nueva línea correctos) en lugar de descargarse.

¿Hay alguna forma de codificar mi texto para que se conserven los caracteres de nueva línea? Si no es así, ¿existe un método diferente para activar la descarga de archivos en el navegador?

editar

He descubierto que las nuevas líneas aparecen en algunos editores de texto. Anteriormente, estaba usando el bloc de notas, que no reconocía los caracteres de nueva línea de Chrome, pero mi otro editor de texto (notepad ++) parece reconocerlos

Respuestas a la pregunta(2)

Su respuesta a la pregunta