UnicodeEncodeError: 'ascii' codec can't encode characters

エラーUnicodeEncodeError

概要

 状態:-  閲覧数:523  投稿日:2017-05-30  更新日:2017-11-11  
ユニコードエンコードエラー

遭遇例1.CSV出力する際、文字化け発生

 閲覧数:337 投稿日:2017-05-30 更新日:2017-10-15 

エラーメッセージ


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



UnicodeDecodeError: 'ascii' codec can't decode byte

コメント投稿(ログインが必要)