«前の日記(2011-04-04 (月)) 最新 次の日記(2011-04-06 (水))» 編集
にっき
Google
2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|10|12|
2015|01|12|
2016|01|12|
2017|01|

2011-04-05 (火) [長年日記]

_ tDiaryを先っちょにしたら文字化け

昨日のzenbackを(コメントの下に)入れるためにtDiaryを先っちょにしたら、すべてが文字化けしてしまった。どうやらHTTPヘッダにcharsetがうまく入ってない様子。

ソースを追っていると、cgi.rbに以下のように渡しているのを発見。

'Content-Type' => 'text/html',
'charset' => 'UTF-8'

cgi.rbを使う場合、この書き方ではcharsetが正常に送られない。

'type' => 'text/html',
'charset' => 'UTF-8'

と書く必要がある。

というわけで、tdiary/dispatcher.rbを以下のように修正。

--- tdiary/dispatcher.rb        (revision 3681)
+++ tdiary/dispatcher.rb        (working copy)
@@ -13,6 +13,7 @@
                                begin
                                        $stdout.print CGI.new.header( headers )
                                rescue EOFError
+                                       headers['Content-Type'] = headers.delete( 'type' )
                                        charset = headers.delete( 'charset' )
                                        headers['Content-Type'] += "; charset=#{charset}" if charset
                                        $stdout.print headers.map{|k,v| "#{k}: #{v}\r\n"}.join << "\r\n"
@@ -76,7 +77,7 @@

                                        begin
                                                head = {
-                                                       'Content-Type' => 'text/html',
+                                                       'type' => 'text/html',
                                                        'Vary' => 'User-Agent'
                                                }
                                                head['status'] = status if status
@@ -114,12 +115,12 @@
                                                body = %Q[
                                                                        <h1>404 Not Found</h1>
                                                                        <div>#{' ' * 500}</div>]
-                                               TDiary::Response.new( body, 404, { 'Content-Type' => 'text/html' } )
+                                               TDiary::Response.new( body, 404, { 'type' => 'text/html' } )
                                        end
                                rescue TDiary::ForceRedirect
                                        head = {
                                                #'Location' => $!.path
-                                               'Content-Type' => 'text/html',
+                                               'type' => 'text/html',
                                        }
                                        head['cookie'] = tdiary.cookies if tdiary && tdiary.cookies.size > 0
                                        body = %Q[
@@ -173,7 +174,7 @@
                                                body = conf.to_mobile( tdiary.eval_rhtml( 'i.' ) )
                                                head = {
                                                        'status' => '200 OK',
-                                                       'Content-Type' => 'text/html',
+                                                       'type' => 'text/html',
                                                        'charset' => conf.mobile_encoding,
                                                        'Content-Length' => body.bytesize.to_s,
                                                        'Vary' => 'User-Agent'
@@ -182,7 +183,7 @@
                                                body = tdiary.eval_rhtml
                                                head = {
                                                        'status' => '200 OK',
-                                                       'Content-Type' => 'text/html',
+                                                       'type' => 'text/html',
                                                        'charset' => conf.encoding,
                                                        'Content-Length' => body.bytesize.to_s,
                                                        'Vary' => 'User-Agent'
@@ -193,7 +194,7 @@
                                rescue TDiary::ForceRedirect
                                        head = {
                                                #'Location' => $!.path
-                                               'Content-Type' => 'text/html',
+                                               'type' => 'text/html',
                                        }
                                        head['cookie'] = tdiary.cookies if tdiary.cookies.size > 0
                                        body = %Q[

なお、cgi.rb以外(rackとか)で正常に動くかは確認していない。

_ zenbackその後

関連記事をどこから引っ張ってきてるのかわからんけど、インデックス非対象な長年日記のURLを表示するのはいただけない。あと記事でない場所にある単語を関連ワードにしたり、いろいろ課題も多いようだ。


«前の日記(2011-04-04 (月)) 最新 次の日記(2011-04-06 (水))» 編集