私の開発環境をミラーリングする新しいMacサーバでプロダクト環境を設定しています。仕事は私のdevのコンピュータ上で支障なく実行されますが、サーバー上で、私はこのトレースバックを取得しています:Dictwriter.writerowsを使用している場合のCSVモジュール「UnicodeEncodeError」
Traceback (most recent call last):
File "/usr/local/share/Code/PycharmProjects/etl3/jira_scripts/jira_issues_incremental.py", line 189, in <module>
writer.writerows(rows)
File "/usr/local/bin/anaconda3/envs/etl3/lib/python3.5/csv.py", line 156, in writerows
return self.writer.writerows(map(self._dict_to_list, rowdicts))
UnicodeEncodeError: 'ascii' codec can't encode character '\u2019' in position 1195: ordinal not in range(128)
このジョブはAutomator
AppでRun Shell Script
端子を介して実行されています。 Automater
端末のsys.defaultencoding()
と、マシン自体を確認しました。すべてはutf8
と言います。私はPostgreSQL
データベースのエンコーディングもチェックしており、それもUTF8
に設定されています。ここでDictwriter
がに書き込みをしていること、ファイルのための私のopen
文です:私も、すべてのデフォルトのエンコーディングが正しいように見えるので、このエラーを追跡するために開始する場所に、わずか困惑
with open(loadfile, 'w') as outf:
writer = csv.DictWriter(
f=outf,
delimiter='|',
fieldnames=fieldnames,
extrasaction='ignore',
escapechar=r'/',
quoting=csv.QUOTE_MINIMAL
)
writer.writerows(rows)
は...このファイルはpsycopg2.cursor.copy_from
コマンドを使用してPostgreSQL
データベースにコピーされているので、そのファイルはそれと互換性のあるモードで書き込まれる必要があります。