在express4.x中使用req.params读取URL中的参数,当参数为中文时,req.url输出的中文为十六进制,而req.params输出的确是中文,我想问一下使用req.params是不是调用了什么或是默认哪种解码方式
欢迎选择我的课程,让我们一起见证您的进步~~
肯定是UTF-8編碼,因為目前官方node只支援UTF-8一種多位元組編碼方式,utf-8中一個漢字由三個位元組構成,你觀看url中16進位編碼正好是12個字節,透過這個也可以驗證。 req.body req.query req.params 把轉碼的多位元組都會反轉回來。
這個是urlencode。用url-safe的字符集進行編碼的。
js裡用encodeURI和decodeURI進行編碼解碼的。其他語言也提供了類似的方法。
encodeURI
decodeURI
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。
%XX
望採納。
肯定是UTF-8編碼,因為目前官方node只支援UTF-8一種多位元組編碼方式,utf-8中一個漢字由三個位元組構成,你觀看url中16進位編碼正好是12個字節,透過這個也可以驗證。
req.body req.query req.params 把轉碼的多位元組都會反轉回來。
這個是urlencode。用url-safe的字符集進行編碼的。
js裡用
encodeURI
和decodeURI
進行編碼解碼的。其他語言也提供了類似的方法。題外
當url中出現不允許出現的字元(例如
空格符),或字元集是US-ASCII的超集的時候,使用UTF-8編碼(極特殊情況,曾使用UTF-16編碼,現已不用),使用
%XX
的形式表示其編碼資料。參見標準RFC3986。望採納。