2013-06-26 79 views
0

我下面這篇文章如何添加編碼蟒蛇生成CSV文件

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中正確顯示。但它在第一列之前也是可見的。

我怎樣可以隱藏,因爲這樣的

回答

2

這兩行中的任何一行都會爲編碼編寫正確的BOM。如果BOM正確,則Excel不應顯示它。

writer = UnicodeWriter(response, quoting=csv.QUOTE_ALL, encoding="utf-8-sig") 

或:

writer = UnicodeWriter(response, quoting=csv.QUOTE_ALL, encoding="utf16") 

utf8utf-16leutf-16be寫了BOM。

+0

確定,所以ü意味着我不需要寫'回聲「\ XEF \ XBB \ XBF」;'在BOM – user1958218

+0

曼聯救了我的任何地方,即工作 – user1958218

+0

我在哪裏可以找到關於BOM的更多信息。我找不到任何地方 – user1958218

0

用戶習慣,我認爲你插入了錯誤的BOM。從https://en.wikipedia.org/wiki/Byte_order_mark#UTF-16它表明你應該使用FF FE或FE FF(取決於大或小端)

Python文檔(在http://docs.python.org/2/howto/unicode.html)建議有一個編碼設置UTF-16。另外'這些編碼的變體,如'utf-16-le'和'utf-16-be',用於小端和大端編碼。也許這些將允許在寫入過程中自動插入BOM。

+0

我想知道,如何插入BOM在python – user1958218