- PR -

シングルコーテーションの判断

投稿者投稿内容
未記入
会議室デビュー日: 2007/07/06
投稿数: 16
投稿日時: 2007-07-06 19:21
はじめまして、.net初心者で、VB.NETでWebアプリの開発を行っています。

ある文字列を暗号化して、その値をJavaScriptの関数の引数にしようと思ってる
のですが、暗号化した文字列の結果に「'」シングルコーテーションが含まれる
場合に「カッコがありません」というクライアントエラーになってしまいます。


Dim a1 as string = 暗号化(文字列)
Dim a2 as string = 暗号化(文字列)

Dim script As String = "test1('" & a1 & "', '" & a2 & "'")
Me.Button1.OnClientClick = script


a1の暗号化した文字列が「bb'cc」
a2の暗号化した文字が「ddd」
だとすると
Me.Button1.OnClientClick = test1('bb'cc', 'ddd')
となって「'」の区別がつかなくなる。

何かいい解決方法はありませんでしょうか?
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-07-06 19:44
JavaScriptでも普通にエスケープつかえっぞ。
未記入
会議室デビュー日: 2007/07/06
投稿数: 16
投稿日時: 2007-07-06 19:51
ぶさいくろうさん
回答ありがとうございます。

なにぶん初心者なものですみません、エスケープというのは具体的に
どのようなものでしょうか?
よっし〜。
ベテラン
会議室デビュー日: 2007/04/17
投稿数: 89
お住まい・勤務地: 北のほうの国
投稿日時: 2007-07-06 20:09
引用:

なにぶん初心者なものですみません、エスケープというのは具体的に
どのようなものでしょうか?



エスケープ文字のことです。

.net初心者というより開発そのものの初心者のような…
「JavaScript エスケープ」などでググってみましょう。
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-07-07 09:48
データ中に含まれる特殊文字についての話のようですので、
エスケープ文字というよりは、エスケープするための関数の問題ですね。
JavaScriptでエスケープするための関数がありますので、それを使いましょう。

encodeURI
decodeURI

ヒントとしては、引数として渡す前にencodeURIして、関数内でdecodeURIします。
未記入
会議室デビュー日: 2007/07/06
投稿数: 16
投稿日時: 2007-07-10 13:10
よっし〜さん、KIさん回答ありがとうございます。

しかし、一つ問題がありまして・・・
引数として渡す前にencodeURIするとの
ことなのですが、VB側でスクリプトの作成を行っているため
引数として渡す前にencodeURIを使用できなくて困っています。
ソースを以下のように書いてもだめでした。

Dim a1 as string = 暗号化(文字列)
Dim a2 as string = 暗号化(文字列)

Dim script As String = "test1(encodeURI(" & a1 & "), '" & a2 & "'")
Me.Button1.OnClientClick = script


a1の暗号化した文字列が「bb'cc」
a2の暗号化した文字が「ddd」
だとすると表示上は
Me.Button1.OnClientClick = test1(encodeURI(bb'cc), 'ddd')
カッコなしエラーになる
マーサ
ベテラン
会議室デビュー日: 2004/11/26
投稿数: 87
投稿日時: 2007-07-10 13:48
気付かれていないようなので、一言。

encodeURI()では、'をエスケープしてくれません。
未記入
会議室デビュー日: 2007/07/06
投稿数: 16
投稿日時: 2007-07-10 14:47
マーサさん回答ありがとうございます。

ということは、encodeURIでは今の状況を解決できないということでしょうか?
何か他にいい方法はありますかね?

スキルアップ/キャリアアップ(JOB@IT)