Finally solved a long-standing problem getting Icelandic characters to work properly in files being downloaded onto Windows machines for use as SPSS syntax. Turns out the solution is to explicitly set the download charset to UTF-8, and to prepend an unnecessary BOM (yuk) to the beginning of the file as so (context: Django view):

import codecs

def export_spss(request):
    response = HttpResponse(export_spss(), status=200, mimetype="application/x-spss; charset=utf-8")
    response['Content-Disposition'] = 'attachment; filename=syntax.sps'
    response.content = codecs.BOM_UTF8 + response.content
    return response

Why is a BOM, which should be completely unnecessary in a UTF-8 file (it has no variable byte order after all) apparently required by some Windows software in order to tell it that the file is UTF-8 encoded, despite Unicode mode being on? Sigh.

updated: