私は日頃 Javascriptは UTF-8形式でファイルを保存しています。
最近 Shift-JISで書かれたテキストファイルを UTF-8で書かれたコードから読み込む必要が出てきたのですが、
「Javascript encoding」でぐぐると、
- 空白文字を%20にエンコーディングするような話と、
- 自分の意図と同じような Shift-JISとUTF-8を変換する話
がでてきて最初のうち間違えて前者を一生懸命やってしまったので、
なるべく同じようなアホを増やさないように覚書。 :p
サーバ上のファイルをエンコーディングを指定して読み込むには以下のようにして読み込みます。
send()をする前に overrideMimeType()でエンコーディングを指定しているところがミソです。
この方法でEUC-jpとかも行けるはず。
/**
* サーバ上のファイルを取ってくる
*
* @param {String} path ファイルのパス
*
* @return {String} ファイルの内容
*/
function get_content_SJIS(path) {
var ajax = new XMLHttpRequest();
if (ajax != null) {
ajax.open('GET', path, true);
// my file's charset is Shift-JIS.
ajax.overrideMimeType('text/plain; charset=Shift_JIS'); // <-- ココ
ajax.send(null);
ajax.onload = function(e) {
utf8text = ajax.responseText; // <-- UTF-8形式の文字列になっている
ゴニョゴニョ(utf8text);
};
}
}