| Ajax | responseText | responseXML |
読み込まれるファイルの文字コードによって生じる文字化け調査
responseXML編

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

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


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

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

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

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


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






* ぜひ、この調査にご協力ください。
* 同一ユーザーエージェントが登録済みなら登録できません
(でも、同じバージョンでもUAは結構違うので登録できると思います)


凡例
UTF-8(XML宣言無し)ML宣言タグを省略 ( UTF-8で保存 )
UTF-8(encoding属性無し)XML宣言タグのencoding属性を省略 ( UTF-8で保存 )      
UTF-8 encoding="utf-8" ( signature付きのUTF-8で保存 )
UTF-8N(signature無) encoding="utf-8" ( signatureなしのUTF-8で保存 )
UTF-16 encoding="utf-16" ( signature付きのUTF-16で保存 )
UTF-16 LE BOM (LE BOM付) encoding="utf-16" ( signature付きリトルエンディアンのUTF-16で保存 )      
UTF-16 BE BOM (BE BOM付) encoding="utf-16" ( signature付きビッグエンディアンのUTF-16で保存 )
UTF-16 LE encoding="utf-16" ( signatureなしリトルエンディアンのUTF-16で保存 )
UTF-16 BE encoding="utf-16" ( signatureなしビッグエンディアンのUTF-16で保存 )
Shift_JIS encoding="Shift_JIS" ( Shift_JISで保存 )
EUC-JP encoding="EUC-JP" ( EUC-JPで保存 )
* xyzzyのメモからこっそり引き写し

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

* Ajax + PHP + SQlite



【中締め的結論050424】

responseXMLに関しては、UTF-8が安全です。XMLHttpRequestオブジェクトが存在して、かつ、UTF-8がだめなブラウザはLinuxのKonquerorのみという状態です。もし、日本語を使うなら、複数のブラウザでUTF-8を利用できない responseText よりは安全といえるのではないかと思います。

FYI :

* XML宣言は省略してもOKですが、encoding属性だけを省略するとアウトです。 必ず、<?xml version="1.0" encoding="UTF-8"?>までしっかり書く必要があります。 * Konqueror/3.3 はすべての文字コードで失敗していますが、実はUTF-16とUTF-16 LE BOM では文字化けしていません。ただ、行末にあった半角空白が除去されて返って来たためマッチしませんでした。 * Konqueror/3.3 はsend(null)という書き方がエラーになりました。

UTF-8がOK

linux
  • Galeon/1.2.14
  • Firefox/0.10.1
  • Epiphany/1.0.4
  • Mozilla 1.7.3


  • Win
  • MSIE 6.0
  • Firefox/1.0.2
  • Firefox/0.8
  • Mozilla 1.0.2
  • Opera 8.0


  • Mac
  • Safari/312
  • Safari/125
  • OmniWeb/v563.34
  • Firefox/1.0.1
  • Mozilla 1.7.3


  • UTF-8がNG

    linux
  • Konqueror/3.3


  • Win
  • なし


  • Mac
  • なし


  • そもそもresponseXMLを受け取れない

    linux
  • Konqueror/3.2以前


  • Win
  • N4以前
  • Operaは7.x以前


  • Mac
  • IE
  • Safari/1.1x以前


  • その他
  • Moz,Ff, Safari 等の未実装バージョンは今のところ不明
  • * Mozillaはmilestone 0.9.7(nightlyビルドの 2001-11-28 以降に実装),Ffはすべてに実装,Safariは1.2x以降に実装

    【中締め的対策050424】

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

    case(Konqueror) {}


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

    表示件数Max

    OS Data date
    ? ShonenScape
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2005.12.27 21:26:10
    Win Opera/9.27 (Windows NT 5.1; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2008.06.23 19:12:22
    Win Opera/9.27 (Windows NT 5.1; U; Edition Campaign 05; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2008.06.02 20:08:18
    Win Opera/9.24 (Windows NT 5.0; U; ja)
    :
    何かの理由でresponseXMLが取得できていません
    XMLHttpRequestオブジェクトの存在確認→oj:[object XMLHttpRequest]
    2007.10.30 12:08:03
    Win Opera/9.23 (Windows NT 5.1; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2007.09.09 18:01:05
    Win Opera/9.23 (Windows NT 5.0; U; en)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2007.08.30 16:29:13
    Win Opera/9.21 (Windows NT 5.1; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2007.06.04 15:50:50
    Mac Opera/9.21 (Macintosh; PPC Mac OS X; U; en)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2007.09.25 02:46:13
    Win Opera/9.20 (Windows NT 5.1; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2007.02.19 05:29:58
    Win Opera/9.12 (Windows NT 5.1; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2007.02.25 13:18:20
    Linux Opera/9.10 (X11; Linux x86_64; U; en)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2007.01.15 15:18:54
    Win Opera/9.10 (Windows NT 5.1; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2007.03.09 05:46:37
    Win Opera/9.10 (Windows NT 5.0; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.12.19 23:12:35
    Win Opera/9.02 (Windows NT 5.1; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.11.20 22:14:46
    Win Opera/9.02 (Windows NT 5.0; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.09.28 16:59:08
    X11 Opera/9.01 (X11; FreeBSD 5 i386; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.09.28 17:59:50
    Win Opera/9.01 (Windows NT 5.1; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.08.09 11:11:18
    Win Opera/9.01 (Windows NT 5.0; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.11.08 16:56:03
    Win Opera/9.00 (Windows NT 5.2; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.03.27 16:23:10
    Win Opera/9.00 (Windows NT 5.1; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.06.24 03:29:12
    Win Opera/9.00 (Windows NT 5.1; U; en)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.05.16 15:11:20
    Win Opera/8.54 (Windows NT 5.1; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.05.12 12:39:13
    Win Opera/8.54 (Windows NT 5.0; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.04.18 15:22:44
    Win Opera/8.53 (Windows NT 5.1; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.06.20 10:13:26
    Win Opera/8.53 (Windows NT 5.0; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.04.25 23:58:21
    Win Opera/8.51 (Windows NT 5.1; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2005.12.14 17:08:25
    Mac Opera/8.51 (Macintosh; PPC Mac OS X; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.01.07 00:17:42
    Win Opera/8.5 (Windows NT 5.2; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.03.27 16:22:55
    Win Opera/8.5 (Windows NT 5.1; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2005.09.29 17:29:19
    Win Opera/8.5 (Windows NT 5.0; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2005.10.02 02:36:21
    Win Opera/8.10 (Windows NT 5.1; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2005.08.11 21:35:52
    Win Opera/8.02 (Windows NT 5.0; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2005.08.02 13:44:57
    Win Opera/8.01 (Windows NT 5.1; U; en)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2005.06.11 01:44:29
    Win Opera/8.01 (Windows NT 5.0; U; ja)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    失敗 : UTF-16 BE BOM (BE BOM付)
    失敗 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2005.07.26 14:03:46
    Win Opera/7.23 (Windows NT 5.1; U) [ja]
    :
    何かの理由でresponseXMLが取得できていません
    XMLHttpRequestオブジェクトの存在確認→存在しません
    2006.02.27 13:44:09
    NetBSD Mozilla/5.0 Galeon/1.2.14 (X11; NetBSD i386; U;) Gecko/0
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    成功 : UTF-16 BE BOM (BE BOM付)
    成功 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2005.04.22 23:45:40
    Linux Mozilla/5.0 (compatible; Konqueror/3.5; Linux; ja, en_US) KHTML/3.5.5 (like Gecko) (Debian)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    成功 : UTF-16 BE BOM (BE BOM付)
    成功 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2007.12.23 18:31:15
    Linux Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.6 (like Gecko)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    成功 : UTF-16 BE BOM (BE BOM付)
    成功 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2007.03.12 21:09:06
    Linux Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    失敗 : UTF-16 BE
    成功 : UTF-16 BE BOM (BE BOM付)
    成功 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2006.12.17 20:13:10
    Linux Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.0 (like Gecko)
    :
    成功 : EUC-JP
    成功 : Shift_JIS
    成功 : UTF-8(XML宣言無し)
    失敗 : UTF-8(encoding属性無し)
    成功 : UTF-8
    成功 : UTF-8N(signature無し)
    成功 : UTF-16 BE BOM (BE BOM付)
    成功 : UTF-16 LE
    成功 : UTF-16 LE BOM (LE BOM付)
    成功 : UTF-16
    2005.11.30 10:06:47
    検索時間 : 0.006633 秒 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(XML宣言無し)','test_1_u8_nonxml.xml')
        getTxtFile('UTF-8(encoding属性無し)','test_1_u8_nonenc.xml')
        getTxtFile('UTF-8','test_1_u8.xml')
        getTxtFile('UTF-8N(signature無し)','test_1_u8n.xml')
        getTxtFile('UTF-16','test_1_u16.xml')
        getTxtFile('UTF-16 LE BOM (LE BOM付)','test_1_u16_le_bom.xml')
        getTxtFile('UTF-16 BE BOM (BE BOM付)','test_1_u16_be_bom.xml')
        getTxtFile('UTF-16 LE','test_1_u16_le.xml')
        getTxtFile('UTF-16 BE','test_1_u16_be.xml')
        getTxtFile('Shift_JIS','test_1_sjs.xml')
        getTxtFile('EUC-JP','test_1_euc.xml')
    
      }
    
    
      //ファイルを読みます
      function getTxtFile(charset,fileName)
      {
        
        //XMLHttpRequestオブジェクト
        var httpoj = createHttpRequest()
    
        //open メソッド
        httpoj.open("GET", fileName , true )
        //httpoj.setRequestHeader("If-Modified-Since", "");
    
        httpoj.onreadystatechange = function() 
        { 
    
          if ( 
               httpoj.readyState == 4   &&
               httpoj.status     == 200 
             ) 
          { 
            xmlDoc  = httpoj.responseXML
            //タグtestdataタグ内のデータをセット
            dataElm = xmlDoc.getElementsByTagName("testdata")
            
            try{
            
              data    = dataElm[0].firstChild.nodeValue
              
            } catch(e){
            
              //失敗なら""
              data = ""
            }
            
            //4、つまりload完了なら内容を表示します
            document.getElementById('test_1_data').innerHTML += mktrtd( charset , data )
            //送信用にもセット
            document.forms['chartest1'].elements['msg'].value += mkdata( charset , data )
          }
        }
        
        //send メソッド
        httpoj.send("")
        
        //ojの存在確認
        document.forms['chartest1'].elements['env'].value = "oj:"+httpoj
    
      }
      
      //結果表示用成形
      function mktrtd(charset,txt)
      {
        //alert("--"+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 = "hidden" value = "" name = "env">
    <input type = "submit" value = "この結果をサーバーへ登録"><br>
    </form>
    
    
    

    【読み込んでいるファイル】(test_1_u8.xmlなど)の内容
    (文字コードが違うだけで内容はほぼ同じです)
    * 「XML宣言無し」は1行目が無しです。
    * 「encoding属性無し」1行目のencoding属性が無しです。
    <?xml version="1.0" encoding="UTF-8"?>
    <testdata>はろー Hellow Ajax! </testdata>
    


    【作業用掲示板】
    responseXML 文字化けTEST