ファイル名に「リンク先.html」とか「画像.jpeg」のようにファイル名(やフォルダ名)に日本語を使いたくなります。
ローカル環境ではOSのファイル管理機能が日本語をサポートしているので、日本語ファイルをそのまま使えます。
しかし、インターネット環境では、半角英数字や半角記号(URLコード)しか使えません。日本語ファイルはそのままでは認識できないのです。
それで、サーバにある日本語ファイルをブラウザでアクセスするには、ブラウザのプログラム(JavaScript)で日本語をURLコードに変換(エンコード)させる必要があります。
JavaScriptでは、encodeURI(), encodeURIComponent() の2つの標準関数があり、これらのURLエンコードは UTF-8 になっています。
多くのブラウザがこの関数をサポートしています。
サーバのファイル管理機能が UTF-8 であれば、ブラウザのJavaScriptでencodeURI(), encodeURIComponent()で変換すればよいので、比較的容易に日本語ファイルをアクセスすることができます。
それに対して、他の Shift_JIS などの日本語文字体系に関しては標準のエンコード関数はサポートされていません。公開ライブラリなどからエンコードツールをダウンロードして使うことになります、
歴史的理由により、これまで、Shift_JIS が広く用いられてきました。
ブラウザでのHTML(JavaScript)記述では Notes(メモ帳)が広く用いられています。近年は UTF-8 がデフォルトになっていますが、以前はShift_JIS でしたので、多くのHTMLが日本語をShift_JIエンコードツールで変換していました。
また、Webサーバの提供側では、Shift_JIS を標準にしていることが多いのです。
自分が公開したWebサイト内での利用に限定したのであれば、サイト内での文字コードが分かるので、自作のHTMLで日本語ファイルを使うことはできますが、他人が作成した日本語ファイルをアクセスするのは困難です。
残念なことに、私の環境では、ローカル環境では UTF-8 なのに、サーバ環境では Shift_JIS になっています。
そのため、Webページはローカル環境では正常に動作しますが、インターネット環境では Not Found になってしまいます。
逆に、インターネット環境で Shift_JISエンコードしたWebページはローカル環境で使えません。
日本語 URLエンコード(UTF-8) Shift_JIS "リンク先" %E3%83%AA%E3%83%B3%E3%82%AF%E5%85%88 %83%8a%83%93%83N%90%e6 "画像" %E7%94%BB%E5%83%8F %89%e6%91%9c
例 var エンコードURL = encodeURI("リンク先.jpeg"); // %E3%83%AA%E3%83%B3%E3%82%AF%E5%85%88.html location.href = エンコードURL; // <a href=> の機能 var エンコード文字列 = encodeURIComponent("画像"); location.href = エンコード文字列 + ".jpeg";
ここでは、次の4ケースを考えます。
この種の公開ツールは多くありますが、ここでは、ヌルコムアーカイブス・デジタル制作室さんの、ecl.js(Escape Codec Library)を拝借しました。
ecl.jsをダウンロードして、このHTMLのスクリプト部に、
<script src="ecl.js"></script>
としておきます。
ecl.jsにはいくつかの関数がありますが、Shift-JIS→URLコードのエンコードには、EscapeSJIS()を用います。
x = EscapeSJIS("リンク先")
とすれば、x = "%83%8a%83%93%83N%90%e6" となります。
ここでは、リンク先のURL「リンク先.html」のうち「リンク先」だけをHTMLで指定し、scriptで「.html」を付加することにします。
通常のファイルへのリンクです。「scriptによるリンク」を参照してください。
script部
function A(ファイル名) {
var リンク先URL = ファイル名 + ".html"; ・・・ア
location.href = リンク先URL;
}
HTML部
<p>詳細は<span onClick="A('リンク先');" style="border-bottom:solid 1px blue;">リンク先.html</span>にあります。</p>
詳細はリンク先.htmlにあります。
Aのアの部分を赤字にように変更します。
script部
function B(ファイル名) {
var リンク先URL = EscapeSJIS(ファイル名) + ".html";
location.href = リンク先URL;
}
HTML部
<p>詳細は<span onClick="B('リンク先');" style="border-bottom:solid 1px blue;">リンク先.html</span>にあります。</p>
詳細はリンク先.htmlにあります。
ここでは、表示する画像ファイル「画像.jpeg」のうち「画像」だけをHTMLで指定し、scriptで「.jpeg」を付加することにします。
通常の画像ファイルの場合です。「画像の読込表示」を参照してください。
script部
function C(ファイル名) {
var 画像 = document.getElementById("C表示場所"); ・・・ア
画像.src = ファイル名 + ".jpeg"; ・・・イ
画像.onload();
}
HTML部
<button type="button" onClick="C('画像');">C画像表示</button><br> ・・・ウ
<img id="C表示場所" width="100"> ・・・エ
ウで与えた「画像」が、イで「画像.jpeg」になります。
アにより、エの位置に画像が表示されます。
Cのイの部分を赤字にように変更します。
script部
function D(ファイル名) {
var 画像 = document.getElementById("D表示場所");
画像.src = EscapeSJIS(ファイル名) + ".jpeg";
画像.onload();
}
HTML部
<button type="button" onClick="D('画像');">D画像表示</button><br>
<img id="D表示場所" width="100">