dポイントプレゼントキャンペーン実施中!

Ajaxを利用し、SJISで作成されたCSVファイルを読み込みたいのですが文字化けしてしまい困っています。

最終的には、Windowsのサイドバーガジェットで、東京電力が公開しているSJISのCSVファイルの中身を表示したいのです。(それ以前にAjax単体で文字化けしてしまいます)

本来、CSVをUTF-8にしたり、サーバサイド(PHPなど)側で文字コード変換したりするのでしょうが、それができないため、JavaScript側で何とかしたいのですが、ご教授願います。

以下、サンプルソースです。
何故か、東京電力のCSVはダメで、東北電力のCSVは大丈夫です。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<html>
<head>
<script language="JavaScript">
function getCsv(uri){
var xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
xmlHttp.open("GET",uri);
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState==4 && xmlHttp.status==200){
document.getElementById("disp").innerHTML = xmlHttp.responseText;
}
}
xmlHttp.send(null);
}
</script>
</head>
<body>
<form>
<select onchange="getCsv(this[this.selectedIndex].value);">
<option>↓選択してください
<option value="http://www.tepco.co.jp/forecast/html/images/juyo …東京電力
<option value="http://setsuden.tohoku-epco.co.jp/common/demand/ …東北電力
</select>
</form>
<div id="disp"></div>
</body>
</html>

A 回答 (2件)

> 何故か、東京電力のCSVはダメで、東北電力のCSVは大丈夫です。



HTTPのレスポンスヘッダを確認してみたところ、
東京電力は Content-Type に charset の指定がありませんでした。
一方、東北電力は charset=shift_jis になっていました。

東京電力
Content-Type: text/plain

東北電力
Content-Type: text/plain; charset=shift_jis

charset が明示されていないものだから、
実際は SJIS なのにブラウザが UTF-8 とみなして
文字化けしている状況ではないかと思います。

東京電力に意見・要望を送り、東北電力と同じに
してもらうのはどうでしょうか。

この回答への補足

その後、東電に意見を送りましたが、現時点で音沙汰無し状態で、
更に、東北電力のデータも文字化けするようになってしみました。

CSV提供元の仕様がはっきりしていないようにも見えるため、
JavaScript側でSJIS(日本語文字)利用は諦めることにしました。

補足日時:2011/08/17 19:07
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

HTTPレスポンスヘッダを確認したところ、確かに東京電両側にcharsetの指定がありまぜんでした。
JavaScript側での回避が困難であるため、東京電力に意見を送ってみたいと思います。
アドバイスありがとございました。

お礼日時:2011/08/14 12:23

一応質問ページのクリッカブルでは後端のゴミが混じる、は置いておいて。


Firefoxで両社CSVソースを落とす限りは、差異が無いですね。
受け取ったCSVを「数値しか必要項目はない」とみなして処理できますか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

言葉足らずで申し訳ありません。
数値の取得は既に実装済みで、新たに「メッセージNo,節電お願い文」のマルチバイト文字を取得したく質問した次第です。

お礼日時:2011/08/14 12:15

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