Webサイトにアクセスしてきた人が、日本語版OSを使っているかそうでないかを知る方法を教えてください。

相手クライアントは(日本語・非日本語の)Windows上のInternet Explorer(6,7)だけを相手にする方法でかまいません。
perlを用いたCGIで、日本語版OSと非日本語版OSで、閲覧可能なページを切り替えるために使える方法でお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/08/10 18:45:53
  • 終了:2007/08/17 08:15:31

回答(4件)

id:Yota No.1

Yota回答回数453ベストアンサー獲得回数282007/08/10 19:02:49

ポイント20pt

HTTPリクエストヘッダの

Accept-Language: ja

Accept-Charset:Shift_JIS,utf-8;q=0.7,*;q=0.7

などを確認すればいいと思います。

(これはわたしのブラウザが出したものですが。)

Perlのことはわかりませんが、「環境変数」に格納されるとか書いてあります。

http://www.rfs.jp/sb/perl/03/03.html

参考

http://www.studyinghttp.net/header#Accept-Language

id:shidho

Accept-LanguageはOSではなく、ブラウザの設定です。

また、Accept-CharsetはIEでは出ないようですが。

あと、非日本語版Windowsでもそれら値を設定することは可能です。

OSの判別には利用出来ないと思うのですが。

2007/08/10 19:38:39
id:matsu-boolean No.2

matsu-boolean回答回数43ベストアンサー獲得回数72007/08/10 19:10:32

ポイント20pt

HTTPヘッダから Accept-Language を取り出せばいいでしょうね。

http://www.studyinghttp.net/header

あたりで調べれば解りやすいかもしれません。

ただし、実際にはコントロールパネルから「地域と言語のオプション」で「英語(米国)」を選択すると、「Accept-Language: en-us」となったりするので判別は完全ではないと思います。

id:shidho

上記返信にも書きましたが、これはOSを判別する方法ではないですよね?

(おわかりの上で回答されたようだとは思いますが)

2007/08/10 19:41:14
id:j1960 No.3

j1960回答回数322ベストアンサー獲得回数212007/08/10 19:52:30

ポイント20pt

無理です。

分かるのはブラウザが日本語対応かどうかだけであって、OSが日本語版かどうかはブラウザはWebサイトに吐きません。

http://www.wotbs.com/~ot-x1/env/env.cgi

id:shidho

はい。通常の環境変数では無理だと思います。

ただ、どうもflashなどでは日本語版OSと非日本語版OSでは挙動が違うようなので、

なにかそういう細かい挙動の違いはないかと

思って質問した次第です。

2007/08/10 23:02:50
id:xxxatsxxx No.4

xxxatsxxx回答回数45ベストアンサー獲得回数22007/08/11 03:12:11

ポイント30pt

上記のようにCGI側では不可能だと思われます。。

ActiveX等が使えるのであれば、

GetSystemDefaultLangID()でLANG_JAPANESEが取得できれば日本語版OSということになります。

これは「地域と言語のオプション」でも変わらないはずです。

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja...

あとはビルド番号を見る方法。(バグ利用は外しておきます)。



ちなみに、そんなに古くないヴァージョンのflashでUTF、フォント埋め込み等であれば、挙動の違いは皆無です。

Flash側でSystem.capabilities.languageで取得して、xmlファイルを切り替える程度の配慮で問題ないかと。

id:shidho

ありがとうございます。

自分で作る分にはいろいろ配慮出来るのですが、

ID for Weblifeをどうしても使いたい、

という話があるもので……。

非対応言語版の簡易ページを別途作って

判別して飛ばすくらいしか思いつかなかったわけです。

2007/08/13 17:02:06
  • id:matsu-boolean
     Flashを使って、フォントを列挙してみて…とも思ったのですが、英語版OSだからといって、絶対「MSゴシック」の類が入っていないとも言い切れないかもしれないですね。

     …思ってみただけです。
  • id:j1960
    Flashって良く知らないんですが、フォルダ名を取得してとかでは無理なのかな。"Desktop"と"デスクトップ"で違いますよね。サーバー側にそれを伝えるのは別の話としても。
  • id:matsu-boolean
    今更…
     ブラウザの申告を信じてよいなら…
     window.navigator.systemLanguage はOSの持つ言語を返すみたいですね。少なくとも、「地域と言語のオプション」には依存しないようです。
     ただしIE限定です。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません