QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

外部JavaScriptファイル使用で文字化け

お世話になります。

aspx内で、外部JavaScriptファイル(S-JIS)を使用すると、
JavaScriptの関数内で文字化けが発生してしまいます。
回避策などありませんでしょうか?よろしくお願いします。

[例]
以下のソースでtestFunc()を実行すると、(????)とメッセージが表示されます。

・aspx側

・script側
function testFunc()
{
alert('(漢字)');
}

■環境
Windows Server 2003
IIS 6.0
VisualStudio.NET 2003
Webアプリ(C#)

質問者:みっちー

回答

TestScript.js ファイルの文字コードが変だから、かな?
_________________囚人のジレンマな日々

投稿者:囚人

編集 履歴 (0)

aspx、jsともに、S-JISで保存されているのですが、
保存する時の文字コードとは別に、
ファイル内に何か明示的に使用文字コードを書かなければならないのでしょうか。

投稿者:みっちー

編集 履歴 (0)

aspx、jsともに、S-JISで保存されているのですが、

保存する時の文字コードとは別に、

ファイル内に何か明示的に使用文字コードを書かなければならないのでしょうか。

ファイル内ではなくて、HTTPのContent-Typeヘッダが「Content-Type: text/javascript; charset="Shift_JIS"」になっている必要があります。具体的なことは知りませんが、IISの設定で何とかします。

投稿者:スフレ

編集 履歴 (0)

ASP.NETはデフォルトではutf-8でHTMLを作成してブラウザに返します。
HTMLのほうはutf-8なのにjsファイルがShift_JISになっているため文字化けが起きているのでしょう。
どちらかの文字コードを変換する必要があると思います。

ASP.NETで作成されるHTMLの文字コードを変換するには、web.configに以下の設定を
記述します。

投稿者:どっとねっとふぁん

編集 履歴 (0)

スクリプトの文字コードについては、以前は全然打つ手が無かった(ヘッダで文字コードを送っても、IEだとSJIS以外受け付けない等あった)のですが、
最近のブラウザだとscriptタグの中にcharsetをつけるだけで行けるみたいですよ。
(確か、ここの過去ログであった気がする。)

(でも、やっぱりブラウザの実装に拠るから、出来れば日本語のメッセージは別にしておくのがいいかも。)

投稿者:冬寂

編集 履歴 (0)

皆様、ありがとうございました。
どっとねっとふぁんさん、冬寂さんの方法でできました。
冬寂さんの方法だと、「'script'の属性'charset'が見つかりません」と開発環境上
で警告が出ますが、動作に問題はなさそうです。

投稿者:みっちー

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。