• ベストアンサー

特定の文字でエラー

ある特定の文字でエラーが出ます。 黒丸を変数に入れて、それを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

  • 「終了していない文字列型の定数です」とでます

    javascriptの以下のコードで「終了していない文字列型の定数です」と出ます。 var fso = new ActiveXObject("Scripting.FileSystemObject"); var file = fso.OpenTextFile("test.txt", 2, true); try { file.WriteLine("ここからレイアウト"); }finally{ file.Close(); } file.WriteLine()の文字が"ここからレイアウト"の時「終了していない文字列型の定数です」のエラーが出ます。ファイル名は「test.js」です。この文字列を出力する方法を教えて下さい。 よろしくお願いします。

  • 変数の中身から特定の文字を置き換える

    $testという変数に、 あいうえお<br>かきくけこ<br>さしすせそ<br> という文字列が格納されているとします。 この時、含まれている特定の文字(ここでは<br>)をスペースに置き換えて、 あいうえお かきくけこ さしすせそ と表示したいのですが、どうすればいいでしょうか?

    • ベストアンサー
    • PHP
  • PHPの文字列の比較について

    PHPの文字列の比較について質問です。 $hoge = "文字列¥¥テスト"; $foo = "文字列¥テスト"; とあった場合 var_dump($hoge == $foo); とすると trueがかえってきます。 バイト列としてみた場合 エスケープしたバックスラッシュと 構文上、エスケープの必要のないバックスラッシュの文字列上の 比較ですがこれが、なぜかtrueがかえってきます。 これは、当然の結果なのでしょうか? PHPは文字列を比較するさい、バイト列としての文字列のならびより アウトプットされる結果を比較しているということでしょうか? それとも、単純に上記変数$hogeと$fooはバスックスラッシュの使用方法は 関係なく同一のものとして扱われるのでしょうか?

    • 締切済み
    • PHP
  • エラーラインが1行ずれている

    こんにちは。 質問があります。 WEBブラウザにおいて、JavaScriptエラーが発生したときに表示されるダイアログで「ライン」に実際のソースでエラーが発生した行数と異なるときがあるのですがこれは何が原因なのでしょうか? 例)JsErrorTest.htmlを開くとlink.jsの4行目でエラーが発生するが ダイアログボックスには ライン:5 文字:2 「document.test.test_propはNullまたはオブジェクトではありません」とエラーメッセージが表示される。 ===========================JsErrorTest.html=========================== <html> <head> <script src="link.js"></script> </head> <body onload="link()"> test </body> </html> ===========================link.js=========================== function link() { var test = ""; test = document.test.test_prop.value; } ご回答よろしくお願いします。

  • 特定文字での文字化け

    DB(oracle)から抽出したものをPerl5でcsv出力しているのですが、特定文字で文字化けが起こってしまいます。 特定文字というのが、シフトJISの「拡張文字」と言われているものにあたるらしく、 0xED40~0xED9Eとか0xFA40~0xFA9Eとかです。 0xED40→ス、0xED9E→シ、0xFA40→。、0xFA9E→.となってしまいます。(文字を出したかったのですが、表示されなかったので文字コードにしました。) $strをDBより抽出した文字列として jcode::convert( \$str, "euc" ); : :(文字列の区切り処理) : jcode::convert( \$str, "sjis" ); ということをやっています。 以前、 &jcode'convert( $str, "euc" ); : :(文字列の区切り処理) : &jcode'convert( $str, "sjis" ); とやっていたのですが、この場合、 「半角カナ+文字コードが7cを含む文字」 が文字化けを起こしていました。 これを修正するために前者のような修正をしたのですが、 間違っているのでしょうか? すみませんが、よろしくお願いします。

  • 特定の文字列の入力を必要とするフォーム

    特定の文字列を入力し、「確定」などのボタンを押すことによって「送信」ボタンを表示させるようにしたいのです。 また、特定の文字列が違っていた場合、「間違っている」などと書かれたダイアログを表示させたいです。 しかし、私の力ではできません。 何方か詳しくソースを教えていただけないでしょうか。 お願いします。

  • AS3.0で埋め込み画像を文字列から呼び出して表示したいです。

    AS3.0で埋め込み画像を文字列から呼び出して表示したいです。 public class Main extends Sprite { [Embed(source="../img/re.png")] public var re_png:Class; public function Main():void { var ClassReference:Class = getDefinitionByName("re_png") as Class; var imgObj:Bitmap = new ClassReference();//表示できない //var imgObj:Bitmap = new re_png();//表示できる addChild(imgObj); } } 普通にnew re_png();で画像を呼び出すことはできましたが、getDefinitionByNameを使って 文字列で呼び出すと変数 re_png は定義されていません。とエラーが出ました。 どうすれば文字列から表示させることができるでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 文字列から特定の文字を抜き出す

    こんにちは。 シェルスクリプトで文字列から特定の文字を抜き出し、 変数に入れたいのですが、うまくいきません。 申し訳ありませんが、アドバイスをお願いいたします。 文字列 $moji=aaa_bbb_ccc (文字は変動します) $a=aaa $b=bbb $c=ccc と"_"毎に変数に代入したい。 echo $moji | awk -F_ '{print $2}' で文字を標準出力に取り出すことはできるのですが、 そこから変数に代入する方法がいまいち分かりません。

  • htmlから特定の文字を取得するには

    VB2005初心者です webbrowserコントロールで表示させたwebページのソースの中にある 特定の文字を取得したいんですけど 例えば <a href="http://〇〇〇〇〇〇〇〇〇〇/〇〇/〇〇/△△△△△△△">△△△△△△△</a> <a href="http://〇〇〇〇〇〇〇〇〇〇/〇〇/〇〇/□□□□□□□">□□□□□□□</a> というhtmlの中から △の文字列と□の文字列だけテキストボックスに表示をさせたいのですが どうすればよいのでしょうか? △はTextBox1 □はTextBox2 の様な感じにしたいです 正規表現やInStr関数など試してみたのですがうまくいきません どなたかご教授お願いしたします ソースなど記述して頂けると助かります

  • php→JavaScript間の変数受け渡し

    phpで文字列を入れた変数をJS側に渡して、アラートで表示させるために、下記のソースを作成しました。ボタンを押したらアラートが出ると想定して作成しました。 ※フレームワークにcakePHPを使用しています。 ------------------------------------------------------------------------ <?php $aaa = 'abc'; echo '<input type="button" onClick="xxx()">'; ?> function xxx() {  var bbb = <?php echo $aaa ?>;  alert(bbb); } ------------------------------------------------------------------------ しかし、上記の記述では正常にアラートが表示されません。 そこでいろいろ試してみた結果、 「$aaa = 'abc';」ではなく、 「$aaa = '111';」や「$aaa = 111;」だと正常にアラートが表示されました。 このことから、数字や数値だとうまくいくことがわかりましたが、今回は文字列の受け渡しを行ないたいと考えています。 何かご存知の方がいらっしゃいましたら、アドバイスを頂けると幸いです。 備考 当たり前なのかもしれませんが、 「var bbb = <?php echo $aaa ?>;」ではなく 「var bbb = 'abc';」とjs側で文字列を直接入力すると、アラートは正常に表示されました。 変数で文字列を渡す方法がわからず、半日ほど時間を使ってしまいました。 本当によろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう