アプリ版:「スタンプのみでお礼する」機能のリリースについて

IE,Chrome,Safari,Operaなどの現行バージョンのブラウザ上では
「document.charset」にてキャラクタセットを取得したり設定したりと双方向に働きますが
FirefoxのJavaScriptにかぎって「document.characterSet」による取得以外の機能が見つかりません。
某ホームページには「document.characterSet='EUC-JP'」ができると記述があるのですが実際やってみるとスクリプトの実行が停止してJavaScriptコンソールには「getter only(取得のみ)」とエラー表示されています。
EUCコード限定のcgiに対してAjaxを利用したページ(utf-8)から日本語のデータをSUBMITするために
この機能で実現できると思ったのですがFirefoxだけがネックになっております。
Firefoxでこのような問題を解決した方がいらっしゃいましたらご教授お願いいたします。

A 回答 (1件)

回答がないみたいなので…




javascriptでやらなくても、別のcgiで受け取って文字コード変換してから渡してやるとか…
(大抵ライブラリがあるでしょうから。)
わざわざ別のcgiにしなくても、そのものを修正できるのならそれにこしたことはありませんが。
いずれにしろ、サーバ側で対処するのがまっとうな方法のような気がします。


どうしてもjavascriptでやるとしても、スクリプトがオフの場合はどうするとか問題は残るでしょう。
というのは置いておいて…
(ちゃんと検証はしていませんので、確認してください)

◇ご質問とほぼ同様の方法
 http://search.web-sun.com/zatu/charset.html

◇javascriptで文字コード変換を行う方法
 http://felix-labo.jp/pukiwiki/?JavaScript%2F%E5% …
 http://perl.g.hatena.ne.jp/tetsu23/20060228/p1

この回答への補足

先にお礼を記入してしまいましたのでこちらで最終結果を記入させていただきます。
リンク先のヒントを参考に試行錯誤した結果、今回の問題に関して理想的な解決法が見つかりました。
後々のために記録として解決策のサンプルを入れておきます。
-----ここから
if((navigator.userAgent.indexOf("Firefox",0) > -1)||(navigator.userAgent.indexOf("Netscape",0) > -1)){
document.f.acceptCharset = 'euc-jp';
document.f.submit();
}else{
document.charset='euc-jp';
document.f.submit();
document.charset='utf-8';
}
-----ここまで
FirefoxはNetscapeのJavaScriptエンジンをいまだ引きずっているようでNetscape7.1も同じ対策でOKでした。
Fijillinさんの的確なアドバイスのおかげでたいへん助かりました。

補足日時:2011/01/28 14:28
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
たしかにおっしゃる通り、CGIを間にかますと簡単な話なんですが、そのCGI自体がページとしてカウントされるため、ブラウザの「戻る」ボタンがページ遷移的にどうしても気になってしまいます。
もしかしたらエンコードすればいけるんじゃないかとやってみたらサブミット時点で再エンコードされてPOSTされるデータがエンコード状態・・・やってみなくても当たり前のことなんですが一縷の望みとやってみました。
ecl.jsも実は試してみたのですが、処理がそのページで完結表示なら使えたんですが、別ページにPOSTするとなると化け化けになってしまいあきらめていました。ハテナの参考リンクをみたら別のやり方があったのですね。
「ご質問とほぼ同様の方法」もたいへん参考になります。後半部分は現状困っている部分ですが、前半部分は試していないのでこれから試してみます。
どうもありがとうございました。

お礼日時:2011/01/27 10:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!