亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

js與ASP.NET 中文亂碼問題

2024-07-10 13:19:11
字體:
來源:轉載
供稿:網友
1. 客戶端 -> 服務端的問題
1.1. get 方式提交短數據效率比 post 方式高
原因:個人感覺
1.2. post 方式提交時,若數據中含有中文,則服務端獲得的數據中文部分會變為亂碼
原因:  可能是提交時 XMLHttpRequest 自動對非標準 ASCII 字符進行了編碼。
     可能只是簡單的逸碼轉換,但具體編碼方式不詳, 在服務端就很難還原。
解決:(a) 在客戶端提交前,對串中的非標準 ASCII 字符用 escape() 手動轉碼。
     這種方法對非標碼位置比較有規律(比如存放在不同的變量中)的情況比較合適。
     在服務端獲取后無須用 unescape() 轉換即可正常處理。
   (b) 對非標碼多而不方便分別 escape() 的,可以用 encodeURI() 兩次(是兩次,不是一次)。
     服務端獲取后用 decodeURI() 一次即得到原正確內容。
疑惑:
     以上兩個解決方法經測試都正確可行。
     有個疑惑就是,瀏覽器在提交數據的時候,看起來是對非標碼進行了一次轉換,
     而在服務端獲取時(如 Request(), getAttribute() 等),看起來又偷偷進行了一次逆向轉換。
     而這兩次轉換似乎沒有遵循同樣的標準,從而對非標碼的默認轉換會導致取不到正確的內容。
     而在客戶端 escape() 后,服務端的逆轉換結果就是正確的??上?escape() 會對串中的所有可轉換
     字符都進行轉換,而標準 ASCII 碼轉換后,在服務端取出來又成了錯的了(神奇....)。
     所以 escape() 僅適合用來轉非標碼。
     終極解決方案就是,在客戶端進行連續的兩次 encodeURI()。
     這個規律是從分析服務端轉碼后的結果串得到的。
     比如‘中'字,在 encodeURI() 一次后被轉碼為‘%E4%B8%AD',而在服務端手動進行一次
     decodeURI() 卻得到了亂碼,猜想會不會是 Request() 偷偷進行那一次轉碼把不該轉的重要標志
     ‘%'也轉掉了,于是在客戶端多做一次 encodeURI(),此時‘中'字的轉碼結果就成了
     ‘%25E4%25B8%25AD',25h 恰好便是‘%',這樣一來,服務端偷轉一次,把‘%25'解為
     ‘%',再由手動 decodeURI() 轉的時候,串已經變成了‘%E4%B8%AD',這樣就得到了正確的
     內容。
     好像沒有說清楚,不過我是明白了,希望以后忘掉的時候也能再看懂。
2. 服務端 -> 客戶端的問題
2.1. 回轉含有中文的數據時,客戶端收到的是亂碼
原因:  肯定是頁面編碼的問題,因為我的前提就是不強求使用統一的編碼,所以這個問題要解決。
解決:  太簡單,只需要在服務端向客戶端回寫數據前任何地方設置 Response.Chartset = "gb2312" 即可,
     不需要像很多討論到的要轉碼甚至有人寫出大段的轉碼程序,當然,客戶端如果是別的編碼方式,
     改一下就行了。
2.2. 客戶端用 JSON 方式處理接收數據時,eval() 函數不能正確地把收到的數據解釋為代碼片段
     比如用 var obj = eval( "{ p1:1, p2:2 }" ) 這樣的形式,obj 是不能正確被初始化為對象實例的,而是會
     收到一個缺少分號的錯誤,而用 eval( "var obj = { p1:1, p2:2 }" ) 這樣的形式,就能正確地生成一個
     obj 的有效對象實例。
     其實仔細想一下,似乎也對,eval() 并不是如書上所講,直接把串作為代碼的一部分插入到整個代碼
     段中,而是返回轉入的表達式的值,而以‘{...}'的形式定義的空函數對象,其表達式值本身是
     undefined,而若其中成員多于一個,則此表達值根本不能作為合法語法獨立存在,所以才會報錯;
     而后一種形式,其實質其實是一個賦值表達式,雖然前綴了 var 會導致整個表達式值為 undefined,
     但此過程中卻真實地生成了 obj 對象實例。在之后的上下文中引用 obj 就是有效的了。
     經過實驗看來,書上和部分前輩文章提到的第一種用法,其實是不能正確工作的,至少在我的機器
     上,它確實失敗了。當然,不能不考慮有可能是我的瀏覽器甚至是 OS 本身的原因,這個就深了。
     解決:不管有多深,問題總是要解決的。也很簡單,只需要按第二種形式,把接收變量的定義一起放
     到 eval() 中,即可正常工作。
     另外,回轉 JSON 數據時,也要考慮B/S雙方編碼問題,如果不一致,按 2.2 中的方法即可解決。
     很重要的一點是,有時候 debug 或 trace 出來的結果,特別是字符串,看起來確實是正確的,但就
     是不能正常工作,那時候就需要從編碼的層次去驗證,而不要僅僅考慮代碼本身邏輯的問題。因為有
     些非打印編碼,在 debug 和 trace 時都是不會被回顯到屏幕上的?!把垡姺菍崱?,這一點,在任何
     地方永遠適用。
綜合感受
     Ajax 作為一種技術,其本身并無先進之處,相反過多地依賴和信仰會令其成為開發中的累贅,大量
     的精力耗費在基礎工作中,思路游離于業務邏輯之外,這是一件好事,可以令你的工作更快地以失敗
     告終。
     但,Ajax 作為一種思想,反而是值得推崇的,這種思想,早已經由賣童裝的美特斯邦威作出了精辟
     的概括——不走尋常路。
     數年來,在世界各地,
     有 80% 的開發人員沒有想到在 submit 之外去找路,他們是幸福的,他們走在一條熟悉的路上。
     另外 10% 的人走在了 iframe 的路上,他們是幸運的,他們找到了一條風景更加美好的路。
     另外 8% 的人在草叢中發現了 XMLHttpRequest,他們是值得尊敬的,他們替人們找到了新的路。
     另外 2% 的人把這條新路命名為 Ajax,他們是偉大的,他們替人們找到了加班到累死的理由。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线视频欧美日韩| 92国产精品视频| 黑人巨大精品欧美一区二区免费| 亚洲最新中文字幕| 欧美香蕉大胸在线视频观看| 97在线免费视频| 国产精品视频导航| 中文字幕欧美精品在线| 日韩在线视频网| 久久视频在线播放| 狠狠做深爱婷婷久久综合一区| 久久久久国产一区二区三区| 国产精品三级网站| 久久99视频精品| 97精品国产91久久久久久| 久久久女女女女999久久| 中文字幕亚洲综合| 日韩av免费看| 精品欧美一区二区三区| 亚洲综合成人婷婷小说| 91极品视频在线| 在线播放国产一区中文字幕剧情欧美| 91国产精品视频在线| 久久这里只有精品视频首页| 日韩av在线免费播放| 亚洲精品一区二三区不卡| 欧美激情免费观看| 久久久免费电影| 国产精品伦子伦免费视频| 91在线观看免费观看| 亚洲乱码国产乱码精品精天堂| 中文在线资源观看视频网站免费不卡| 在线播放国产一区中文字幕剧情欧美| 国产91精品最新在线播放| 日本19禁啪啪免费观看www| 欧美精品videosex牲欧美| 欧美激情精品久久久久| 日韩美女免费视频| 欧美性猛交99久久久久99按摩| 日韩高清av一区二区三区| 欧美午夜精品久久久久久浪潮| 黑人巨大精品欧美一区免费视频| 亚洲图片制服诱惑| 91久久夜色精品国产网站| 亚洲成avwww人| 久热在线中文字幕色999舞| 中文欧美在线视频| 成人www视频在线观看| 精品香蕉一区二区三区| 国语自产精品视频在线看抢先版图片| 欧美日韩在线视频首页| 77777亚洲午夜久久多人| 中文字幕在线观看亚洲| 亚洲美女性视频| 亚洲色图美腿丝袜| 日韩精品免费电影| 欧美亚洲激情在线| 亚洲人成网站免费播放| 欧美亚洲日本黄色| 亚洲自拍小视频| 国产精品久久久久久久午夜| www.xxxx欧美| yw.139尤物在线精品视频| 亚洲精品99久久久久中文字幕| 91免费在线视频网站| 成人黄色片在线| 热99精品里视频精品| 欧美精品久久久久久久久久| 久久精品91久久香蕉加勒比| 亚洲图片在线综合| 疯狂做受xxxx欧美肥白少妇| 青青久久av北条麻妃海外网| 亚洲美女av电影| 97国产精品视频人人做人人爱| 黄色一区二区在线观看| 久久精品国产91精品亚洲| 国产日韩欧美综合| 色噜噜狠狠色综合网图区| 欧美中文在线视频| 中文字幕免费精品一区| 国产成人高潮免费观看精品| 久久久久久亚洲精品不卡| 亚洲欧美变态国产另类| 日韩欧亚中文在线| 久久久人成影片一区二区三区| 欧美激情女人20p| 国产亚洲欧美日韩精品| 5252色成人免费视频| 成人网页在线免费观看| 97免费视频在线播放| 欧美xxxx18性欧美| 欧美乱妇40p| 欧美性猛交xxxxx水多| 亚洲精品中文字| 色综合久久88色综合天天看泰| 成人黄色av播放免费| 成人激情视频小说免费下载| 2020欧美日韩在线视频| 亚洲欧美资源在线| 91成人在线播放| 国产91在线播放精品91| 国产色综合天天综合网| 中文字幕日韩av综合精品| 91精品91久久久久久| 国产一区二区三区在线观看网站| 成人xvideos免费视频| 日韩在线中文视频| 日韩av在线网址| 日韩精品www| 中文字幕欧美日韩| 一区二区三区国产视频| 亚洲成人黄色网| 亚洲影院污污.| 欧美丰满少妇xxxxx| 欧美成人小视频| 日韩av电影国产| 日韩最新av在线| 久久精品国产99国产精品澳门| 亚洲精品久久视频| 国产精品91在线观看| 亚洲一区二区精品| 中文字幕精品—区二区| 最好看的2019的中文字幕视频| 亚洲网站在线播放| 欧美大肥婆大肥bbbbb| 国内精品久久久久| 亚洲成人黄色在线观看| 国产在线精品自拍| 欧美乱妇高清无乱码| 国产精品久久久久久久一区探花| 亚洲综合精品伊人久久| 国产欧美亚洲视频| 欧美成人午夜视频| 欧美成人第一页| 深夜福利91大全| 青青在线视频一区二区三区| 亚洲第一男人av| 日韩av中文字幕在线播放| 亚洲精品视频播放| 亚洲人午夜精品免费| 久久久久久亚洲精品不卡| 在线观看欧美www| 中文字幕成人精品久久不卡| 91黑丝高跟在线| 欧美亚洲国产视频| 亚洲欧美色婷婷| 亚洲综合日韩中文字幕v在线| 国产不卡精品视男人的天堂| 亚洲成av人影院在线观看| 最近2019年好看中文字幕视频| 国内免费精品永久在线视频| 欧美日韩国产二区| 日韩亚洲综合在线| 日韩女优人人人人射在线视频| 欧美日韩亚洲高清| 精品自拍视频在线观看| 日韩中文字幕网| 91国内免费在线视频| 81精品国产乱码久久久久久| 亚洲精品中文字幕av| 国产欧美精品久久久| 精品国产一区二区三区久久久| 自拍偷拍亚洲区| 538国产精品视频一区二区|