我正在关注这篇文章
https://stackoverflow.com/a/9016545
我想知道我怎么能用Python做到这一点。我不知道如何在那里插入BOM数据
这是我目前的代码
response = HttpResponse(content_type='text/csv')
response['Content-Type'] = 'application/octet-stream'
response['Content-Disposition'] = 'attachment; filename="results.csv"'
writer = UnicodeWriter(response, quoting=csv.QUOTE_ALL, encoding="utf-8")
我想转换为utf -16。 BOm数据是这样但不知道如何插入它 从这里https://stackoverflow.com/a/4440143
echo "\xEF\xBB\xBF"; // UTF-8 BOM
但是我想要它用于python和utf-16
我尝试在记事本中打开csv并在开头插入\xef\xbb\xb
并正确显示excel。但在第一栏之前也可见。
我如何隐藏,因为用户不喜欢
答案 0 :(得分:2)
这些行中的任何一行都为编码写入了正确的BOM。如果BOM正确,则Excel不应显示它。
writer = UnicodeWriter(response, quoting=csv.QUOTE_ALL, encoding="utf-8-sig")
或:
writer = UnicodeWriter(response, quoting=csv.QUOTE_ALL, encoding="utf16")
utf8
,utf-16le
和utf-16be
不撰写BOM。
答案 1 :(得分:0)
我认为您插入了错误的BOM。从https://en.wikipedia.org/wiki/Byte_order_mark#UTF-16开始,它建议您使用FF FE或FE FF(取决于大端或小端)
python docs(http://docs.python.org/2/howto/unicode.html)表明utf-16有一个编码设置。此外还有这些编码的变体,例如'utf-16-le'和'utf-16-be'用于小端和大端编码'。也许这些将允许在写作期间自动插入BOM。