台灣最大程式設計社群網站
線上人數
1168
 
會員總數:243625
討論主題:188242
歡迎您免費加入會員
討論區列表 >> ASP.NET >> asp net (c#) AutoPostBack="true" Request URL 中文亂碼
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
asp net (c#) AutoPostBack="true" Request URL 中文亂碼
價值 : 20 QP  點閱數:468 回應數:3

樓主

arwin451
門外漢
0 3
78 1
發送站內信

asp net (c#) AutoPostBack="true" Request URL 中文亂碼:

A.aspx(有加上text=Server.HtmlDecode("中文")) =>B.aspx(有加上Server.HtmlEncode(Request.QueryString["text"])))

中文不會亂碼。

但是,在B.aspx 執行下拉選單(AutoPostBack="true" OnSelectedIndexChanged) 或 選日期(AutoPostBack="true") ,

只要有異動,B.aspx 網頁的 URL 的中文 text 參數 就會變為亂碼,只有第一次傳遞過來時text 參數 中文不會亂碼,

(Web.config ==> 我已加上 <globalization requestEncoding="utf-8" responseEncoding="utf-8"/>)也沒辦法排除這種狀況。

不知要改哪裡?煩請協助,謝謝!



搜尋相關Tags的文章: [ AutoPostBack ] , [ Request URL 中文亂碼 ] ,
本篇文章發表於2018-03-07 14:31
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
1.比較不建議在Url中,放中文,盡量以英數為主
2.放在Url中,建議透過Server.UrlEncode進行編碼,可以避免一些控制碼的碰撞或異常

^_^



本篇文章回覆於2018-03-12 15:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

Forevertim
檢舉此回應
傳值可以考慮用Session
本篇文章回覆於2018-03-13 08:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

topcat
捐贈 VP 給 topcat 檢舉此回應
to #2
小喵說一下自己的原則
跨頁傳值的方式有很多,各種有各種的特點與使用情境

1.QueryString
也就是帶在網址上
由於放在網址上,安全性的狀況要考慮,『不要』放關鍵值,讓你的網頁隨人家玩(例如:訂單編號)
另外,中文通常因為會做UrlEncode避免衝碼,所以放中文SEO的效果有限
如果是商品網站,把機種代號放在上面,有助於SEO
QueryString的數量長度是有限制的,注意不要超過

2.Form POST
如果是https的通訊協定,用POST可以保護傳輸過程
中文的內容如果要傳送,個人建議用這個

3.Session
Session是很寶貴的資源(主機的記憶體)
因此,除非是安全性的關鍵,例如:是否登入,登入後的帳號
否則,小喵不會輕易使用session
有必要使用,資料存放也盡量簡短

4.Cookie
這是存放在Client端的,有長度限制
除了可以跨頁傳遞,還可以在Client端保留一段時間(幾天)
所以可以讓瀏覽器關閉後,再開啟,仍然可以讀得到
應用上,例如:
購物車存於資料庫,產生的Key值可以放Cookie
這樣,使用者前幾天放在購物車,沒有登入,過幾天後,再次開啟購物車時,資料可以完整保留。

5.Html5的Web Storage
區分local Storage與 Session Storage
詳細參考
https://www.huanlintalk.com/2012/06/html5-web-storage.html

應用上,4.的購物車,也可以用html5 Web Storage的Local Storage

不過4的方式,如果搭配會員登入機制,搭配Cookie,資料庫
甚至可以做到跨機器、跨裝置
這部分小喵就不細談

各種方式有其特性與應用情境,端看應用在什麼情境上,在從各個方式中,挑選合適的
樓主傳遞中文,小喵建議透過form post會相對適合一些
提供參考

^_^
本篇文章回覆於2018-03-13 10:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.