express - node.js中req.params的问题
天蓬老师
天蓬老师 2017-04-17 15:15:49
0
2
548

在express4.x中使用req.params读取URL中的参数,当参数为中文时,req.url输出的中文为十六进制,而req.params输出的确是中文,我想问一下使用req.params是不是调用了什么或是默认哪种解码方式

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(2)
洪涛

肯定是UTF-8編碼,因為目前官方node只支援UTF-8一種多位元組編碼方式,utf-8中一個漢字由三個位元組構成,你觀看url中16進位編碼正好是12個字節,透過這個也可以驗證。
req.body req.query req.params 把轉碼的多位元組都會反轉回來。

洪涛

這個是urlencode。用url-safe的字符集進行編碼的。

js裡用encodeURIdecodeURI進行編碼解碼的。其他語言也提供了類似的方法。

encodeURI('解码问题') // => '%E8%A7%A3%E7%A0%81%E9%97%AE%E9%A2%98'
decodeURI('%E8%A7%A3%E7%A0%81%E9%97%AE%E9%A2%98') // => '解码问题'

題外

當url中出現不允許出現的字元(例如 空格符),或字元集是US-ASCII的超集的時候,使用UTF-8編碼(極特殊情況,曾使用UTF-16編碼,現已不用),使用%XX的形式表示其編碼資料。參見標準RFC3986。

望採納。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板