-PR-

解決済みの質問

質問:No.6940092
困ってます
困ってます
お気に入り投稿に追加する (0人が追加しました)
回答数2
閲覧数1183
AjaxでSJISファイル読み込みすると文字化け
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-j.csv">東京電力
<option value="http://setsuden.tohoku-epco.co.jp/common/demand/juyo_tohoku.csv">東北電力
</select>
</form>
<div id="disp"></div>
</body>
</html>
投稿日時 - 2011-08-13 11:45:48

質問者が選んだベストアンサー

回答:No.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 とみなして
文字化けしている状況ではないかと思います。

東京電力に意見・要望を送り、東北電力と同じに
してもらうのはどうでしょうか。
投稿日時 - 2011-08-13 17:54:35
この回答を支持する
(現在1人が支持しています)
補足
その後、東電に意見を送りましたが、現時点で音沙汰無し状態で、
更に、東北電力のデータも文字化けするようになってしみました。

CSV提供元の仕様がはっきりしていないようにも見えるため、
JavaScript側でSJIS(日本語文字)利用は諦めることにしました。
投稿日時 - 2011-08-17 19:07:58
お礼
回答ありがとうございます。

HTTPレスポンスヘッダを確認したところ、確かに東京電両側にcharsetの指定がありまぜんでした。
JavaScript側での回避が困難であるため、東京電力に意見を送ってみたいと思います。
アドバイスありがとございました。
投稿日時 - 2011-08-14 12:23:32
この質問は役に立ちましたか?
1人が「このQ&Aが役に立った」と投票しています

ベストアンサー以外の回答 (1)

回答:No.1
一応質問ページのクリッカブルでは後端のゴミが混じる、は置いておいて。
Firefoxで両社CSVソースを落とす限りは、差異が無いですね。
受け取ったCSVを「数値しか必要項目はない」とみなして処理できますか。
投稿日時 - 2011-08-13 12:46:00
この回答を支持する
(現在1人が支持しています)
お礼
回答ありがとうございます。

言葉足らずで申し訳ありません。
数値の取得は既に実装済みで、新たに「メッセージNo,節電お願い文」のマルチバイト文字を取得したく質問した次第です。
投稿日時 - 2011-08-14 12:15:10
別のキーワードで再検索する
もっと聞いてみる

関連するQ&A

回答募集中

  • 回答募集中のQ&Aはありません。

この他の関連するQ&Aをキーワードで探す

別のキーワードで再検索する
-PR-

OKWaveのおすすめ情報

特集

同じカテゴリの人気Q&Aランキング

カテゴリ
AJAX

回答のついた最新のQ&A

カテゴリ
AJAX

rss

eccschool

Q_iconjqueryでtable内容の置き換え2013-04-18 00:24:25

LancerVII

eccschool

Q_iconAjaxで住所検索2013-04-02 10:17:51

-PR-

ピックアップ

ノウハウ共有サイト

-PR-
-PR-