コンピュータや音楽の事書いてます

bash cgi サーバ側ファイルがshift-jisのときに、ブラウザ側ではUTF-8で扱いたい

素人がアップする、など、どうしてもファイルの中身がshift-jisである場合、
AJAXのgetで、ファイルを要求、それをUTF-8に変換してブラウザで表示する、などという場合、ブラウザがIE以外であればoverrideMimeTypeを使えば良いが、IEの場合、responseBodyをADOを通して変換、などとややこしい。そんなんだったら、サーバ側でcgiで変換して送り返してやれ、という場合のcgi
perlでやった方が良いのかもしれないけど。

#!/bin/bash
#getSJISfile.cgi

echo -e "Content-type: text/plain;charset=UTF-8\n\n"

#encodeURIされて送られてきたURLをdecodeする
param=$(echo ${QUERY_STRING} | tr % = | nkf -WwmQ )
#&以降を削除
param=$(echo $param | sed -e 's/&.*//')

iconv -f cp932 -t utf-8 "$param"
    var fname, httpObj, text;
    fname = encodeURI(fname);
    httpObj = jQuery.get("getSJISfile.cgi?" + fname, null, function () {
        text = httpObj.responseText;
        if(!text.match(/\r/)) text = text.replace(/\n/, "\r\n"); //IEは\nだけだと改行と認識しない為
    })