概要
状態:-
閲覧数:523
投稿日:2017-05-30
更新日:2017-11-11
ユニコードエンコードエラー
遭遇例1.CSV出力する際、文字化け発生
エラーメッセージ
Apacheログ
▼/var/log/httpd/
[error] UnicodeEncodeError: 'ascii' codec can't encode characters in position 2-3: ordinal not in range(128)
修正前
コード
▼index.py
import csv
from bottle import route
@route('/')
def index():
# ファイルを書き込み用に開く。newline=''として改行コードの自動変換を抑制する。
with open('top_cities.csv', 'w', newline='') as f:
writer = csv.writer(f) # csv.writerはファイルオブジェクトを引数に指定する。
writer.writerow(['rank', 'city', 'population']) # 1行目のヘッダーを出力する。
# writerows()で複数の行を一度に出力する。引数はリストのリスト。
writer.writerows([
[1, '上海', 24150000],
[2, 'カラチ', 23500000],
[3, '北京', 21516000],
[4, '天津', 14722100],
[5, 'イスタンブル', 14160467],
])
修正前
コード
▼index.py
import csv
from bottle import route
@route('/')
def index():
# ファイルを書き込み用に開く。newline=''として改行コードの自動変換を抑制する。
with open('top_cities.csv', 'w', encoding='utf8', newline='') as f:
writer = csv.writer(f) # csv.writerはファイルオブジェクトを引数に指定する。
writer.writerow(['rank', 'city', 'population']) # 1行目のヘッダーを出力する。
# writerows()で複数の行を一度に出力する。引数はリストのリスト。
writer.writerows([
[1, '上海', 24150000],
[2, 'カラチ', 23500000],
[3, '北京', 21516000],
[4, '天津', 14722100],
[5, 'イスタンブル', 14160467],
])
正常出力結果
▼top_cities.csv
rank,city,population
1,上海,24150000
2,カラチ,23500000
3,北京,21516000
4,天津,14722100
5,イスタンブル,14160467
1,上海,24150000
2,カラチ,23500000
3,北京,21516000
4,天津,14722100
5,イスタンブル,14160467