Python3をレンタルサーバで使った時に、日本語が’ascii’ codec can’t encode characters in position 0-4: ordinal not in range(128) でエラー
StarServerでPython3の動作確認をしていたのですが、
'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
というエラーになってしまいました。
‘ascii’ codec can’t encode charactersとなったコード
#!/usr/bin/python3.6
try:
print ('Content-Type: text/html\n')
print ("あいうえお<br>")
except Exception as e:
print (e)
google検索し、Python3の場合は
# -*- coding: utf-8 -*-
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
を記載するだけでイケルと書いてあったのですが、これだけではブラウザの実行結果は
ã‚ã„ã†ãˆãŠ
という意味不明な表示となりました。
最終的にうまく日本語が表示できたコード
#!/usr/bin/python3.6
# -*- coding: utf-8 -*-
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
try:
print('Content-type: text/html; charset=UTF-8\n')
print ("あいうえお<br>")
except Exception as e:
print (e)
print(‘Content-type: text/html; charset=UTF-8\n’)
とcharset=UTF-8の付与が必要だったようで、これで問題なく日本語の表示が可能となりました。