Ajax(Asynchronous JavaScript + X) テスト
| Ajax | responseText | responseXML |
読み込まれるファイルの文字コードによって生じる文字化け調査
responseText編

responseTextもresponseXMLも、読み込まれるファイルの文字コードによって文字化けを生じる場合があります。 XMLを前提とした処理ですからutf-8やutf-16が推奨されるわけですけれど、utf-8やutf-16だからといって必ずしも安全ではありません。

そこで、自動的にそれを調べて表示するスクリプトを用意しました。ブラウザの文字コード対応が(たぶん)わかる仕組みです。

【中締め的結論060728】 この調査では、このページそのもののcharsetを見てもわかるように、はじめからutf-8に軸足が置かれています。そのような環境でも、Shift_JISやEUCは動作するかな?という程度のスタンスで扱っています。インクルードしている.jsライブラリはShift_JISで問題なかったので、多少軽く考えてしまったのですが、その結果、EUC-JP、Shift_JISのデータはこのページのcharsetの影響を受けていたことがわかりました。 やはり、正しくは、読み込むページと読み込まれるページの文字コードは揃えて調べなければいけません。そこで、AjaxでShift_JISやEUC_JPは使えるのか?というのを試してみました。

【中締め的結論051110】戻りのURLエンコードをしなくても、UTF-8にBOMをつける事でSafari1.2の文字化けは解消します。ただし、PHPなどでは、BOMのせいでエラーがでる場合もありますので注意が必要です。

【中締め的結論050615】Ajaxで使う2バイト系文字列は、ブラウザ側でもサーバー側でも、送出時にエンコードしておくべきですと、文字化けの大半はなくなります(追記2005.12.13:正確には、サーバー側については、そうしなければいけないわけではありません。Opera、Safari、Konquerorの文字化けを避けたければ、今のところこれしかないかなという意味です)。JavaScriptのencodeURI()はutf-8でエンコードしてくれますので大概はこれだけでも有効です。Safariの場合は、ブラウザからの送出時は良いのですが、サーバーからの戻りもJavaScriptのencodeURI()なアルゴリズムなどでエンコードされていないと化けます。もし、このサンプルのように、静的ファイルを取ってくるだけなら、あらかじめ、たとえば、IEやFirefoxのアドレス欄へ javascript:document.write(encodeURI('エンコードしたい文字列')) を打ち込むと作れる、エンコード後の文字列を使えば化けなくなります。サーバー間の往復が必要な時は、手製エンコードを使う手もあります。ちなみにこれならデータサイズも小さくなります。


【ここで行っていること】

サーバーに9種類のTEXTファイル( 保存した文字コードが異なる )を用意してあります。下記の「 XMLHttpRequestで受信 」 ボタンクリックで、 XMLHttpRequestオブジェクトの responseTextプロパティによってそれらを読み込み、書き出します。

ブラウザが各文字コードに対応していなければ、文字化けしますから、それによってブラウザの対応状況を判定します。

「 この結果をサーバーへ登録 」 ボタンを押して送信すれば、サーバーにそのデータが記録されて、ブラウザ毎の文字コード対応状況についてのデータベースとして蓄積されていきます。


【このブラウザの受信結果を出力】






* ぜひ、この調査にご協力ください。
* 同一ユーザーエージェントが登録済みなら登録できません
(でも、同じバージョンでもUAは結構違うので登録できると思います)
凡例
UTF-8 signature付きのUTF-8で保存
UTF-8N(signature無) signatureなしのUTF-8で保存
UTF-16 signature付きのUTF-16で保存
UTF-16 LE BOM (LE BOM付) signature付きリトルエンディアンのUTF-16で保存      
UTF-16 BE BOM (BE BOM付) signature付きビッグエンディアンのUTF-16で保存
UTF-16 LE signatureなしリトルエンディアンのUTF-16で保存
UTF-16 BE signatureなしビッグエンディアンのUTF-16で保存
Shift_JIS Shift_JISで保存
EUC-JP EUC-JPで保存
* xyzzyのメモからこっそり引き写し

* ちなみに、読み込まれるファイルの文字コードを複数テストしましたが、読み込む側のこのページ自体のcharsetはutf-8で、インクルードしている.jsライブラリはShift_JISに固定してあります。これも実はいろいろ変えてテスト済みですがこちらは特に問題がないようでした。このページ自体のcharsetはutf-8を選びました。文字コード別のファイル作成用エディタには xyzzy version 0.2.2.234を利用させていただきました(_ _)(xyzzyの文字エンコーディングなど)。

* Ajax + PHP + SQlite



【追記050615】

取ってくるファイルをutf-8のencodeURI()してやれば、文字化けしません。また、送出して受け取る場合は、送出時にencodeURI()しただけでは、Safariで戻りが化けます。そこで、さらに、手製の エンコード処理 by my encodeを追加すれば、化けません。

ちなみに、utf-8のencodeURI()した文字列は、IEやFirefoxのアドレス欄へ javascript:document.write(encodeURI('エンコードしたい文字列')) を打ち込むと作れます。
【中締め的結論050428】

responseTextに関しては、UTF-8は、最もユーザーの多いWin IEやMozilla/Firefoxで使えますので、おおむね安全といえますが、Opera8やLinuxのKonqueror、MacのSafariは文字化けします。3ブラウザともBOM付のUTF-16ならOKです。とはいえ、もし、日本語を使うなら、responseXML を使う方が安全といえるでしょう。

FYI : * Konqueror/3.3 はsend(null)という書き方がエラーになりました。

UTF-8がOK
Linux Win Mac
  • Galeon/1.2.14
  • Firefox/0.10.1
  • Epiphany/1.0.4
  • Mozilla 1.7.3
  • MSIE 6.0
  • Firefox/1.0.2
  • Firefox/0.8
  • Mozilla 1.0.2
  • OmniWeb/v563.34
  • Firefox/1.0.1
  • Mozilla 1.7.3
  • UTF-8がNG
    Linux Win Mac
  • Konqueror/3.3
  • Opera 8.0
  • Safari/312
  • Safari/125
  • OmniWeb/v563.34
  • そもそもresponseTextを受け取れない
    Linux Win Mac
  • Konqueror/3.2以前
  • N4以前
  • Operaは7.x以前
  • IE
  • Safari/1.1x以前
  • その他
  • Moz,Ff, Safari 等の未実装バージョンは今のところ不明
  • * Mozillaはmilestone 0.9.7(nightlyビルドの 2001-11-28 以降に実装),Ffはすべてに実装,Safariは1.2x以降に実装

    【中締め的対策050428】

    Konqueror、Safari、Opera8について、とりあえず考えられそうな対策

    case(Konqueror||Safari||Opera8) {}


    【各ブラウザの受信結果】

    表示件数Max


    OS Data date
    Win Opera/9.63 (Windows NT 6.0; U; ja) Presto/2.1.1
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2009.01.28 22:22:52
    Win Opera/9.63 (Windows NT 5.1; U; ja) Presto/2.1.1
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2009.01.21 11:27:08
    Win Opera/9.62 (Windows NT 5.1; U; ja) Presto/2.1.1
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2008.11.28 23:12:20
    Win Opera/9.61 (Windows NT 5.1; U; ja) Presto/2.1.1
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2008.10.26 15:46:32
    Win Opera/9.60 (Windows NT 6.0; U; ja) Presto/2.1.1
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2008.10.22 00:20:12
    Win Opera/9.52 (Windows NT 6.0; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2008.09.05 17:36:36
    Win Opera/9.52 (Windows NT 5.1; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2008.09.03 00:37:21
    Win Opera/9.51 (Windows NT 6.0; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2008.07.09 17:23:20
    Win Opera/9.51 (Windows NT 5.1; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2009.02.05 21:46:55
    Win Opera/9.50 (Windows NT 5.1; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2008.06.13 10:12:01
    Mac Opera/9.50 (Macintosh; PPC Mac OS X; U; en)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2008.06.18 11:00:09
    Win Opera/9.27 (Windows NT 6.0; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2008.04.24 12:53:44
    Win Opera/9.27 (Windows NT 5.1; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2008.05.02 21:06:53
    Win Opera/9.26 (Windows NT 5.0; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2008.03.20 20:34:14
    Win Opera/9.25 (Windows NT 5.1; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.12.26 15:32:26
    Linux Opera/9.24 (X11; Linux i686; U; en)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.11.03 23:18:38
    Win Opera/9.24 (Windows NT 6.0; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.11.30 18:46:06
    Win Opera/9.24 (Windows NT 5.1; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.11.15 13:33:37
    Win Opera/9.24 (Windows NT 5.0; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.10.30 12:12:49
    Win Opera/9.24 (Windows 98; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.11.21 18:18:22
    Linux Opera/9.23 (X11; Linux i686; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.11.13 05:22:31
    Linux Opera/9.23 (X11; Linux i686; U; en)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2008.10.27 00:05:43
    Win Opera/9.23 (Windows NT 5.1; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.08.30 17:43:40
    Win Opera/9.23 (Windows NT 5.0; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.09.25 23:03:41
    Win Opera/9.22 (Windows NT 5.1; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.11.21 20:50:45
    Win Opera/9.21 (Windows NT 5.1; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.06.06 10:08:27
    Win Opera/9.20 (Windows NT 5.1; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.04.27 19:44:40
    Win Opera/9.12 (Windows NT 5.1; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.01.23 17:18:47
    Linux Opera/9.10 (X11; Linux i686; U; en)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.01.21 07:36:03
    Win Opera/9.10 (Windows NT 6.0; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.04.08 17:01:57
    Win Opera/9.10 (Windows NT 5.1; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2006.12.27 14:28:30
    Win Opera/9.10 (Windows NT 5.0; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2006.12.22 18:27:13
    Win Opera/9.10 (Windows NT 4.0; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2007.02.06 19:03:51
    Win Opera/9.02 (Windows NT 5.1; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2006.09.26 18:37:45
    Win Opera/9.02 (Windows NT 5.0; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2006.09.23 21:30:49
    Win Opera/9.02 (Windows 98; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2006.12.13 14:13:01
    Win Opera/9.01 (Windows NT 5.1; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2006.07.19 10:16:39
    Win Opera/9.01 (Windows NT 5.0; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16
    2006.11.08 15:28:11
    Win Opera/9.00 (Windows NT 5.1; U; ja)
    :
    失敗 : EUC-JP
    失敗 : Shift_JIS
    成功 : UTF-8
    失敗 : UTF-8N(signature無し)
    成功 : UTF-16 BE (BE BOM付)
    失敗 : UTF-16 BE
    成功 : UTF-16 LE (LE BOM付)
    成功 : UTF-16 LE
    成功 : UTF-16
    2006.02.26 00:08:45
    Win Opera/9.00 (Windows NT 5.0; U; ja)
    :
    何かの理由でresponseTextが取得できていません
    XMLHttpRequestオブジェクトの存在確認→oj:[object XMLHttpRequest]
    2006.07.05 01:18:09
    検索時間 : 0.009324 秒 40件


    【この実験のソース】(つまりこのページのソース)

    
    <html>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta http-equiv="content-script-type" content="text/javascript">
        
    <!-- ライブラリ -->
    <script language = "JavaScript" 
            charset = "Shift_JIS"
            src     = "../../lib//jslb_ajax.js"></script>
    
    <script language="JavaScript">
    <!--
    
      function main()
      {
        //初期化
        document.getElementById('test_1_ua').innerHTML     = ""
        document.getElementById('test_1_data').innerHTML   = ""
        document.forms['chartest1'].elements['name'].value = ""
        document.forms['chartest1'].elements['msg'].value  = ""
        document.forms['chartest1'].elements['env'].value  = ""
        
        //UA
        var ua = navigator.userAgent
        //ユーザーエージェントをセット
        document.getElementById('test_1_ua').innerHTML += ua 
        //送信用にもセット
        document.forms['chartest1'].elements['name'].value = ua 
    
        //エンコーディング別にファイルを読み込みテストする
        getTxtFile('UTF-8','test_1_u8.txt')
        getTxtFile('UTF-8N(signature無し)','test_1_u8n.txt')
        getTxtFile('UTF-16','test_1_u16.txt')
        getTxtFile('UTF-16 LE (LE BOM付)','test_1_u16_le_bom.txt')
        getTxtFile('UTF-16 BE (BE BOM付)','test_1_u16_be_bom.txt')
        getTxtFile('UTF-16 LE','test_1_u16_le.txt')
        getTxtFile('UTF-16 BE','test_1_u16_be.txt')
        getTxtFile('Shift_JIS','test_1_sjs.txt')
        getTxtFile('EUC-JP','test_1_euc.txt')
    
      }
    
    
      //ファイルを読みます
      function getTxtFile(charset,fileName)
      {
        
        //XMLHttpRequestオブジェクト生成
        var httpoj = createHttpRequest()
    
        //open メソッド
        httpoj.open("GET", fileName , true )
    
        httpoj.onreadystatechange = function() 
        { 
      
          if ( 
               httpoj.readyState == 4   &&
               httpoj.status     == 200 
             ) 
          { 
            //4、つまりload完了なら内容を表示します
            document.getElementById('test_1_data').innerHTML += mktrtd( charset , httpoj.responseText )
            //送信用にもセット
            document.forms['chartest1'].elements['msg'].value += mkdata( charset , httpoj.responseText )
          }
        }
        
        //send メソッド
        httpoj.send("")
        
        //ojの存在確認
        document.forms['chartest1'].elements['env'].value = "oj:"+httpoj
    
      }
      
      //結果表示用成形
      function mktrtd(charset,txt)
      {
      
        //評価
        var ok = "失敗"
        if(txt=="はろー Hellow Ajax! ")
        { 
          ok = "<b><font color='#ff6600'>成功</font></b>" 
          charset = "<b>"+ charset+"</b>"
        }
            
        return "	" + ok + "	:	" + charset + "	:	" + txt + "<br>"
        
      }
    
      //結果送信用
      function mkdata(charset,txt)
      {
      
        //評価
        var ok = "失敗"
        if(txt=="はろー Hellow Ajax! "){ ok = "成功" }
        
        return  charset+":::" + ok  +";"
      }
          
    //-->
    </script>
    
    <body onload="main()">
    
    <!-- 結果出力用DIV -->
    <div id="test_1_ua"></div>
    <div id="test_1_data"></div>
    <br>
    <br>
    <form name     = "chartest1"
          method   = "post"
          action   = "./test_1_make_table.php">
    <input type = "hidden" value = "" name = "name">
    <input type = "hidden" value = "" name = "msg">
    <input type = "submit" value = "この結果をサーバーへ登録"><br>
    <font size="-1">
    *エラーなケースも記録する必要があるのでAjaxではありません(^^;
    </font>
    </form>
    <hr>
    
    </body>
    </html>
    
    
    

    【読み込んでいるファイル】(test_1_u8.txtなど)の内容
    (文字コードが違うだけで内容は同じです)

    はろー Hellow Ajax!


    【作業用掲示板】