スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

XMLHTTP の responseText でエラーになる @IE

CATEGORYプログラム
IE というか、msxml のお話。

「XML」と銘打っている XMLHttpRequest だけど、JSON などで使う機会も多い responseText。
テキストをそのまま返してくれるはずなんだが、エラー -1072896658 (C00CE56E) が返されることがある。

[MSXML] MSXML のエラー メッセージ HRESULT C00CE56E "指定したエンコードはシステムでサポートされていません。"

Knowledge Base (KB304625) によれば、Java のデフォルトキャラクタセットが "ISO8859_1" で、IANA が定める標準 "ISO-8859-1" と違うのが悪い(*)んだ、という言い方をしている。

    (*) Mlang.dll がきちんと検査をしている

デファクトで認められていようが、決まりを守らないのが悪い、というのは納得できる。
まあ、ここまでは良い、としよう。

Web サーバが unix 系で、文字コードに (所謂) Shift_JIS を使う場合、 クライアントが解釈する charset は Shift_JIS でも、サーバサイドでは、 charset は Windows-31J を指定しないと、「~」など、本当の Shift_JIS から はずれた文字が化けてしまうのは、常識 (かな?)。

で、JSP の page ディレクティブで、
    <%@ page contentType="text/xml;charset=Windows-31J" %>
        ...
なレスポンスを返しても、相変わらず C00CE56E になってしまう。
Windows-31J は IANA が定めたもの なのに。
Name: Windows-31J
MIBenum: 2024
Source: Windows Japanese.  A further extension of Shift_JIS
        to include NEC special characters (Row 13), NEC
        selection of IBM extensions (Rows 89 to 92), and IBM
        extensions (Rows 115 to 119).  The CCS's are
        JIS X0201:1997, JIS X0208:1997, and these extensions.
        This charset can be used for the top-level media type "text",
        but it is of limited or specialized use (see RFC2278).
        PCL Symbol Set id: 19K
Alias: csWindows31J
しばし悩むこと数十分。
IANA を見てると、Windows-31J に Alias があることに気づく。

    <%@ page contentType="text/xml;charset=csWindows31J" %>
        ...
駄目もとで試してみたら、エラーにならずに正しく動作するっぽい。

「Mlang.dll で検査してるから...」とか言いながら、自分のとこの charset にも正しく対応できてないじゃんか >M$
KB の記載を書き直すか、Mlang.dll を更新してくれよ。
Webサーバが IIS なら、charset に Shift_JIS を設定すれば良いから、問題ないってか。


また、バッドノウハウ を蓄積してしまった。
関連記事
スポンサーサイト

XMLHTTPRequest AJAX responseText IE

1 Comments

-  

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

2012/03/28 (Wed) 13:02 | EDIT | REPLY |   

Leave a comment

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。