为什么unicodecsv写得不好?

时间:2017-06-26 23:39:55

标签: python python-2.7 unicode

我有以下Python代码:

import unicodecsv as csv
import sys

with open("unicode_test.csv", "w+b") as csv_file:
    writer = csv.writer(csv_file, encoding="utf-8")
    writer.writerow([u'\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf\xe4\xb8\x96\xe7\x95\x8c'])

这应创建一个CSV,表示"こんにちは世界&#34 ;;相反,它写出了胡言乱语。使用十六进制编辑器检查最终产品显示出相似之处:EX YY ZZ转换为C3 AX C2 YY C2 ZZ,但我无法理解。

我在Windows 10上运行Python 2.7.11,而sys.stdout.encoding说" cp437"在控制台中。

1 个答案:

答案 0 :(得分:3)

您可以尝试在源文件的顶部设置这样的源代码编码:

# coding=utf-8

因此,您的整个解决方案应如下所示:

# coding=utf-8
import unicodecsv as csv
import sys

with open("unicode_test.csv", "w+b") as csv_file:
    writer = csv.writer(csv_file, encoding="utf-8")
    writer.writerow([u'こんにちは世界'])

有关使用unicode字符文字的进一步阅读,您可以查看Python Unicode HOWTO文档

让我知道它是怎么回事