日本語が含まれるファイルの読み込み

広告

英数字だけが含まれる場合はあまり気にしなくても大丈夫なのですが、日本語が含まれるデータを処理する場合には注意が必要です。

まず試してみます。以前のページで試したサーバ側のファイルを読み込んで表示するサンプルで、日本語が含まれるファイルを読み込んで表示してみましょう。

読み込むファイルは次の通りです。

japan.txt

日本語テスト

実際にブラウザで表示するHTMLページは次の通りです。

sample1.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0.1//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html lang="ja">
<head>
<meta http-equiv="Content-Type" Content="text/html;charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/javascript">

<title>非同期通信テスト</title>

<script type="text/javascript">
<!--
var xmlHttp;

function loadText(){
  if (window.XMLHttpRequest){
    xmlHttp = new XMLHttpRequest();
  }else{
    if (window.ActiveXObject){
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
      xmlHttp = null;
    }
  }
  xmlHttp.onreadystatechange = checkStatus;
  xmlHttp.open("GET", "https://www.ajaxtower.jp/sample/japan.txt", true);

  xmlHttp.send(null);
}

function checkStatus(){
  if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
    alert(xmlHttp.responseText);
  }
}

// -->
</script>

</head>
<body>

<h1>非同期通信テスト</h1>

<form>
<input type="button" value="ファイル読み込み" onClick="loadText()">
</form>

</body>
</html>

まずIE7.0でHTMLページを表示して、ファイルを読み込んでみます。

日本語が含まれるファイル

IE7.0では何も表示されませんでした。

FireFoxでもHTMLページを表示して、ファイルを読み込んでみます。

日本語が含まれるファイル

FireFoxでは文字化けして表示されます。

このようになる理由は「responseText」で受け取ったデータをデフォルトでは文字コード「UTF-8」として解釈しようとするためです。先ほどの日本語が含まれたファイルは「Shift_JIS」で記述していました。

では今度は読み込むファイルの文字コードを「UTF-8」として保存してみます。ファイルの中身は同じです。

japan_utf8.txt

日本語テスト

実際にブラウザで表示するHTMLページは次の通りです。

sample2.html

まずIE7.0でHTMLページを表示して、ファイルを読み込んでみます。

日本語が含まれるファイル

FireFoxでもHTMLページを表示して、ファイルを読み込んでみます。

日本語が含まれるファイル

このように日本語が含まれている場合でも文字化けせずに表示することが出来ました。

( Written by Tatsuo Ikura )