プロが教える店舗&オフィスのセキュリティ対策術

ある特定の文字でエラーが出ます。

黒丸を変数に入れて、それをtest.js(文字コードeuc) で保存します。
それをクリックするとエラーが出ます。

【ソース】
---------------
var test ="●";
---------------
をtest.jsで保存

表示されるエラーは
”エラー:終了していない文字列型の定数です。”
です。

原因は、●のようです。
このような場合、どうすればいいのでしょうか?
¥(エスケープ)しても無理でした。
●のあとに/などを入れると、エラーは消えますが、表示させると/まで表示されます。

また、他にこのような文字はあるでしょうか?

よろしくお願いします。

A 回答 (9件)

> これは、Shift_JISで開こうとするからエラーになるのであって、本当はエラーではないのでしょうか?


> このまま、htmlで使っても問題ないのでしょうか?
 
jsファイル、それを読み込む htmlファイル、両方の文字コードが EUC-JPなら問題ありません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

>jsファイル、それを読み込む htmlファイル、両方の文字コードが EUC-JPなら問題ありません。

自分がよくわかっていないことがわかりました。
とりあえず、問題が無いようなので安心しました。

お礼日時:2009/08/26 18:15

>これは、Shift_JISで開こうとするからエラーになるのであって、本当はエラーではないのでしょうか?


Shift_JISだから文字化けが起こり、結果的にエラーとなります。

>このまま、htmlで使っても問題ないのでしょうか?
HTMLで使用するのではなくて単体で使用するんですよね?

>都合上、EUCにこだわっています。
でしたら
var test='\u25cf';
にするしかないと思います。

test.js
WScript.Echo("\u25cf");

上をEUCで保存して、C:\Windows\system32\wscript.exe
で実行してみてください。
使っているソフトはこれですよね?
    • good
    • 0
この回答へのお礼

ありがとうございます。

>C:\Windows\system32\wscript.exe

jsをクリックすると、このソフトが動くのですか?
自分が使っているソフトすらわかっていない状態です。
根本的にわかっていなので、もうちょっと勉強します。

お礼日時:2009/08/26 18:03

JavaScript の ソーステキストのフォーマットは UTF-16 です。



cf. http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma26 …

また、#1, #6 のように、\u でエスケープする事が許されているので、ASCII の範囲外の文字はエスケープしておくと安全です。

もちろん、charset も有効。

文字化けする可能性のある文字は
http://ash.jp/code/unitbl21.htm
の中腹辺りの Unicode にはない特殊文字を使用すると文字化けの可能性がでてきます。

というより、文字コードが違っていればどんな文字でも化けます。

使用しているソフトがどんなものか分かりませんが、var test ="。・; のようになっていることを考えると、そのソフトの変換の実装があまいか、ファイル関係なしに特定コードで読み込んでる、とか適当なこと言ってみる。
    • good
    • 0
この回答へのお礼

ありがとうございます。
入門書片手の状態なので、文字コードあたりのことがよくわかっていません。
JavaScriptってもっと手軽(いいかげん)なものだと思っていました。
もうちょっと勉強します。

お礼日時:2009/08/26 17:59

document.write('\u25cf');//で、くろまる

    • good
    • 0
この回答へのお礼

ありがとうございます。
確かに、黒丸になりました。
でも、黒丸が\u25cfなのか・・・・
すみません。

お礼日時:2009/08/26 17:56

> 黒丸を変数に入れて、それをtest.js(文字コードeuc) で保存します。


> それをクリックするとエラーが出ます。
この test.jsファイルを、Windowsのコマンドラインから実行すれば当然、Shift_JISで開こうとします。
EUC-JPで保存した 「var test ="●";」 は 「var test ="。・;」 にみえますから、”終了していない文字列型の定数です。” というエラーになります。
jsファイルはHTMLに読み込んで動作するものです。
また、jsファイルの文字コードはHTMLの文字コードと同じにすべきです。(No.2 sh_hiroseさんの仰るように文字コードを指定しても言うことを聞いてくれないブラウザがあります)

この回答への補足

>EUC-JPで保存した 「var test ="●";」は 「var test ="。・;」 にみえます

これは、Shift_JISで開こうとするからエラーになるのであって、本当はエラーではないのでしょうか?
このまま、htmlで使っても問題ないのでしょうか?

補足日時:2009/08/25 22:49
    • good
    • 0

あーブラウザで実行するわけじゃないのね;


ソフトはwscript.exeかな?

WSHはほとんどいじったことないから解決策と言ったら「UTF-8」で保存するとしか言えない。

もしEUCにこだわらないならUTF-8に変換するべきだと思います。
JavaScriptは基本的にUTF-8っていうのが一般的だし。
(絶対と言うものでもありませんが。)
    • good
    • 0
この回答へのお礼

ありがとうございます。
都合上、EUCにこだわっています。

ネットで調べていると、jsファイルをクリックするとエラーチェックできる。と言うのがありました。
そこで、チェックしていて今回の疑問がわきました。

お礼日時:2009/08/25 22:58

JavaScriptを開いたソフトは何ですか?


No2さんのやり方で正常に動作します。これでエラーが出るのなら問題があるのはコードではなくソフトの方です。
そのソフトがEUCに対応していない(あるいは設定がされていない)のでしょう。

この回答への補足

test.js(文字コードeuc) で保存します。
htmlの拡張子ではありません。
それをクリックするとダイアログが出ます。
そこには、エラーと表示されます。
ダイアログの左上には、”window script host”と書いてあります。

補足日時:2009/08/25 15:42
    • good
    • 0

たぶん<script>に文字コード(charset)を指定していないからでしょう。



HTML(Shift_JISで保存)
<html>
<head>
<title>sample</title>
<script type="text/javascript" src="./sample.js" charset="euc-jp"></script>
</head>
<body onload="echo();">
</body>
</html>

JavaScript(EUC-JPで保存)
var test = "●"

function echo() {
window.alert(test);
}

この回答への補足

ありがとうございます。
test.js単体でエラーが出ます。
jsファイルには、charsetを指定すところはないと思うのですが・・・

補足日時:2009/08/25 12:58
    • good
    • 0

var test='\u25cf';


とか?

この回答への補足

もう少し詳しく書いていただけたら・・・
var test='\u25cf';
が●の代わりになるのでしょうか?

補足日時:2009/08/25 23:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!