CGIモジュールとcharset

Posted at 2004-03-11T17:30:00+09:00 in Coding

PerlでCGIモジュールを利用する時、Content-Typeヘッダにcharsetパラメータを加えるには、headerメソッドで-charset => 'UTF-8'などと指定するわけですが、どうもtext/*なもの以外では無視され、Content-Typeヘッダにcharsetパラメータを加えてくれないみたいです。

要は、

print header(
  -type    => 'application/xml',
  -charset => 'UTF-8',
);

だと、

Content-Type: application/xml

としか出力されないってことです。

blosxom$blog_charsetという文字コードを指定する設定を追加しようとして、ゴニョゴニョやっていた時に気づきました。CGIモジュールのソースでcharsetパラメータを付け加えるコードが、

$type .= "; charset=$charset" if $type ne '' and $type =~ m!^text/! and $type !~ /\bcharset\b/ and $charset ne '';

となってたので、text/*以外では無視というのはどうやら当たっていたみたいです。なので、

print header(
  -type => 'application/xml; charset=UTF-8',
);

こうやってやらないとダメぽ。また一つ賢くなりました。

バッド・ノウハウ!

Recent entries from same category

このエントリと同じカテゴリに投稿された最近10件のエントリです。

  1. Path::Class(::File)のslurp()でバイナリ・ファイルががが
  2. Google Closure Compiler ServiceでJavaScriptファイルをコンパイルするPerlスクリプト
  3. はてなブックマークのブックマークレットをlightbox化
  4. AutoHotkey: ホイール・スクロールを加速
  5. SimpldR: livedoor Readerをシンプルに
  6. CSSのプロパティをソートするPerlスクリプト
  7. MEGAUPLOADから簡単にダウンロード
  8. Query YQLプラグインでOpen Data Tableをサポートした
  9. Amazon Product Advertising APIで返されるProductGroupの日本語訳
  10. Aex: Amazon.co.jpの全商品から検索するよ!

Comments

JavaScriptに対応、または有効な環境の場合、ここにこのエントリへのはてなブックマークコメントが表示されます。