- - PR -
Request.QueryStringで漢字の受け渡し
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2002-09-25 14:27
初めて投稿します。よろしくお願い致します。
既存のASPアプリケーションをASP.NETに移植しています。 既存のASPの場合以下のようなリンクを動的に作成していました。 ./result.asp?bukken=○○○株式会社様(○○製品)&customer_code=A001 これで問題なく動作していたのですが、ASP.NETの場合、 ./result.aspx?bukken=○○○株式会社様(○○製品)&customer_code=A001 ASPがASPXに変わっただけなのですが、Request.QueryStringで 変数に値を代入すると、漢字の一部が文字化けしてしまいます。 ○○E株式会社様(E○製品)のように、文字の一部が「E」な どに変わってしまいます。 ContentEncodingプロパティを変更して色々試してみましたが、 同じように文字化けしてしまいます。 文字化けさせずにうまく値を受け渡す方法はないでしょうか? |
|
投稿日時: 2002-09-25 15:19
HTMLEncodeあたりが使えるんじゃないかと。。。
|
|
投稿日時: 2002-09-25 15:27
うーん。
HttpUtility.UrlEncodeメソッドでvalueになる文字列を囲ってみるとかで、どうでしょう。 |
|
投稿日時: 2002-09-25 15:41
shuさん、DaikiRyutoさん 情報ありがとうございます。
HTMLEncodeもHttpUtility.UrlEncodeも知りませんでした。 ヘルプを見たら使えそうなんですが、ちょっと問題があります。 漢字の値はOracleに格納されており、 SELECT './result.aspx?bukken=' || BUKKEN || '&customer_code=..... というようなSQLを作成し、結果をDataGridにbindしています。 で、DataGridのハイパーリンク列でそのURLの格納された列を参照 させています。 どこでHTMLEncode関数を使うのかが、よくわかりません。ASPですと 結果のテーブル出力時に関数を使って値を格納できそうなんですが、 DataGridの場合はどうすれば、良いでしょうか? |
|
投稿日時: 2002-09-25 17:48
自己レスです。
UrlEncode関数を使うために、SQLを見直し、Oracle Objects for OLEの Dynasetから1行ずつループで回し、DataTableオブジェクトに格納して DataGridにbindさせるよう変更しました。 DataTableに格納するとこころで、UrlEncode関数を使ったところうまく 行きました。 この方法が最良なのかどうかはわかりませんが、結果オーライです。 ソースはこんな感じです。 strSQL = "SELECT .... from ...." OraSession = New OracleInProcServer.OraSessionClass() OraDatabase = OraSession.OpenDatabase("oracle", "scott/tiger",OracleInProcServer.dbOption.ORADB_DEFAULT) OraDyn_dat = OraDatabase.CreateDynaset(strSQL, CLng(4)) OraFields_dat = OraDyn_dat.Fields Dim dt As DataTable = New DataTable() Dim dr As DataRow dt.Columns.Add(New DataColumn("BUKKEN")) (中略) dt.Columns.Add(New DataColumn("CUSTOMER_CODE")) Do Until (OraDyn_dat.EOF) dr = dt.NewRow() dr(0) = "./result.aspx?bukken=" & Server.UrlEncode(OraFields_dat(0).Value) (中略) dt.Rows.Add(dr) OraDyn_dat.MoveNext() Loop Dim dv As DataView = New DataView(dt) MyDataGrid.DataSource = dv MyDataGrid.DataBind() ありがとうございました。 |
1