• ベストアンサー

特定の文字でエラー

ある特定の文字でエラーが出ます。 黒丸を変数に入れて、それをtest.js(文字コードeuc) で保存します。 それをクリックするとエラーが出ます。 【ソース】 --------------- var test ="●"; --------------- をtest.jsで保存 表示されるエラーは ”エラー:終了していない文字列型の定数です。” です。 原因は、●のようです。 このような場合、どうすればいいのでしょうか? ¥(エスケープ)しても無理でした。 ●のあとに/などを入れると、エラーは消えますが、表示させると/まで表示されます。 また、他にこのような文字はあるでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • okmotokun
  • ベストアンサー率59% (92/155)
回答No.9

> これは、Shift_JISで開こうとするからエラーになるのであって、本当はエラーではないのでしょうか? > このまま、htmlで使っても問題ないのでしょうか?   jsファイル、それを読み込む htmlファイル、両方の文字コードが EUC-JPなら問題ありません。

a-z_A-Z
質問者

お礼

ありがとうございます。 >jsファイル、それを読み込む htmlファイル、両方の文字コードが EUC-JPなら問題ありません。 自分がよくわかっていないことがわかりました。 とりあえず、問題が無いようなので安心しました。

すると、全ての回答が全文表示されます。

その他の回答 (8)

  • sh_hirose
  • ベストアンサー率66% (56/84)
回答No.8

>これは、Shift_JISで開こうとするからエラーになるのであって、本当はエラーではないのでしょうか? Shift_JISだから文字化けが起こり、結果的にエラーとなります。 >このまま、htmlで使っても問題ないのでしょうか? HTMLで使用するのではなくて単体で使用するんですよね? >都合上、EUCにこだわっています。 でしたら var test='\u25cf'; にするしかないと思います。 test.js WScript.Echo("\u25cf"); 上をEUCで保存して、C:\Windows\system32\wscript.exe で実行してみてください。 使っているソフトはこれですよね?

a-z_A-Z
質問者

お礼

ありがとうございます。 >C:\Windows\system32\wscript.exe jsをクリックすると、このソフトが動くのですか? 自分が使っているソフトすらわかっていない状態です。 根本的にわかっていなので、もうちょっと勉強します。

すると、全ての回答が全文表示されます。
  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.7

JavaScript の ソーステキストのフォーマットは UTF-16 です。 cf. http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/6_Source_Text.html また、#1, #6 のように、\u でエスケープする事が許されているので、ASCII の範囲外の文字はエスケープしておくと安全です。 もちろん、charset も有効。 文字化けする可能性のある文字は http://ash.jp/code/unitbl21.htm の中腹辺りの Unicode にはない特殊文字を使用すると文字化けの可能性がでてきます。 というより、文字コードが違っていればどんな文字でも化けます。 使用しているソフトがどんなものか分かりませんが、var test ="。・; のようになっていることを考えると、そのソフトの変換の実装があまいか、ファイル関係なしに特定コードで読み込んでる、とか適当なこと言ってみる。

a-z_A-Z
質問者

お礼

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

すると、全ての回答が全文表示されます。
回答No.6

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

a-z_A-Z
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • okmotokun
  • ベストアンサー率59% (92/155)
回答No.5

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

a-z_A-Z
質問者

補足

>EUC-JPで保存した 「var test ="●";」は 「var test ="。・;」 にみえます これは、Shift_JISで開こうとするからエラーになるのであって、本当はエラーではないのでしょうか? このまま、htmlで使っても問題ないのでしょうか?

すると、全ての回答が全文表示されます。
  • sh_hirose
  • ベストアンサー率66% (56/84)
回答No.4

あーブラウザで実行するわけじゃないのね; ソフトはwscript.exeかな? WSHはほとんどいじったことないから解決策と言ったら「UTF-8」で保存するとしか言えない。 もしEUCにこだわらないならUTF-8に変換するべきだと思います。 JavaScriptは基本的にUTF-8っていうのが一般的だし。 (絶対と言うものでもありませんが。)

a-z_A-Z
質問者

お礼

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

すると、全ての回答が全文表示されます。
回答No.3

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

a-z_A-Z
質問者

補足

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

すると、全ての回答が全文表示されます。
  • sh_hirose
  • ベストアンサー率66% (56/84)
回答No.2

たぶん<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); }

a-z_A-Z
質問者

補足

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

すると、全ての回答が全文表示されます。
回答No.1

var test='\u25cf'; とか?

a-z_A-Z
質問者

補足

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

すると、全ての回答が全文表示されます。

関連するQ&A