asp.Netにおけるurlアドレスが中国語パラメータを転送する際の2つのソリューション

2315 ワード

Web.comfigの構成は同じです.
ページヘッダ部分にもあります
おかしいですね、
愚かな方法を使うしかなかった.
書き込みパラメータ:
 
  
string strurl = PreUrl + "?word={0}&sort={1}&check={2}";
strurl = string.Format(strurl, HttpUtility.UrlEncode(this.txtSearchTxt.Text.Trim(), System.Text.Encoding.GetEncoding("GB2312")), this.radioSortDesc.SelectedIndex.ToString(), CheckState.ToString());
Page.Response.Redirect(strurl);
// gb2312

読み込みパラメータ:
 
  
try
{ if (Page.Request.QueryString["word"] != null)
{ _word = Convert.ToString(HttpUtility.UrlDecode(Page.Request.QueryString["word"], System.Text.Encoding.GetEncoding("GB2312"))); }
}
catch { _word = String.Empty; }
/// gb2312,

その後、孟子の文章を見て、もっと良い解決策があることに気づいた.
Javascriptで!
ベースクラスページにメソッドを書く
 
  
public void PageLocation(string chineseURL)
{
if(chineseURL==null || chineseURL.Trim().Length==0 )
{return;// URL Tony 2007/11/15
}
Page.ClientScript.RegisterStartupScript(this.GetType(), "AgronetPageLocationTo", " window.location.href='"+chineseURL+"';");
}

そしてページで呼び出す
 
  
string strurl = PreUrl + "?word={0}&sort={1}&check={2}";
strurl = string.Format(strurl, this.txtSearchTxt.Text.Trim(), this.radioSortDesc.SelectedIndex.ToString(), CheckState.ToString());
PageLocation(strurl);

注意後の方法はJavasrciptを使用し、実際の応用はページング時に中国語のパラメータを維持する必要があり、windowを使用することが望ましい.Location.Hrefメソッド!
最後にjavascriptと.Netバックグラウンドコードで会話できます.
 
  
<br>function GoUrl() <br>{ <br>var Name = " "; <br>location.href = "B.aspx?Name= "+escape(Name); <br>} <br>


受信:
 
  
string Name = Request.QueryString[ "Name "];
Response.Write(HttpUtility.UrlDecode(Name));

ポイント:
伝達された中国語パラメータを符号化し,受信時に復号する.
終わります.