細かい原理はよく分からない(要はshift_jisには「㌧」だの「㍉」だのは含まれてないってことなんだろうけど)のだが、ログファイル自体は「shift_jisx0213」で読み込み、出力は「utf-8」で行うようにすることで、エラーも起きず、「㌧」も表示されるようになった。前回との相違点については強調にしてあるが、要するに↑に書いたようなことだ。
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' ㌧を含むsjisファイルを読み込んで整形して出力する ''' import re import sys import codecs def parseRes( res, n ): # 特に変更はないので省略 print 'Content-Type: text/html;charset;utf-8' print print ''' <html> <head><title>prototype2</title> <meta http-equiv="Content-Type" content='text/html; charset="utf-8"' /> </head> <body> <dl> ''' fout = codecs.getwriter('utf-8')(sys.stdout) fres = codecs.open( './sjis.txt', 'r', 'shift_jisx0213', 'strict' ) # 以降も変更はないので省略
→実行結果がかつてはリンクされていました。
追記
冷静になって考えてみたら、shift_jisx0213で読み込んでshift_jisx0213で出力するってので、ぱっと見の出力はShift_JISになるな。ケータイのこと考えるとその方がいい気がした。