日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

liunx 上get 不到url参数 java_URL传递中文参数,大坑一枚,Windows与Linux效果竟然不一致...

發(fā)布時(shí)間:2025/6/15 linux 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 liunx 上get 不到url参数 java_URL传递中文参数,大坑一枚,Windows与Linux效果竟然不一致... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

下午,計(jì)劃2個(gè)小時(shí)搞定,個(gè)人官網(wǎng)第6次升級(jí),就可以干點(diǎn)輕松的事了,結(jié)果,下午多搞了2個(gè)小時(shí),晚上又搞了2個(gè)小時(shí),才搞定。最后一個(gè)世界難題是,URL傳遞中文參數(shù)。問題大致是這么出現(xiàn)的:我為“博客雷觀”?這個(gè)欄目,增加了“全文搜索”功能,用lucene實(shí)現(xiàn)的。因此,需要傳遞中文參數(shù)。搜索框表單提交,傳遞中文,很簡單就搞定了。? ?搜索之后的分頁url,需要帶上當(dāng)前的“搜索詞”?,比如“程序員”,我在本地很輕松就搞定了。無非就是這樣:search/search.html?keyword=${keyword}"? keyword就是中文詞匯,比如“程序員”。? ?我本以為,扔到服務(wù)器上,重啟一次,就萬事大吉了,結(jié)果點(diǎn)擊第2頁的時(shí)候,沒有搜索到任何文章。查看日志,發(fā)現(xiàn)搜索詞是“亂碼” 。? 我第一反應(yīng)是,傳遞的中文“程序員”?沒有正確地進(jìn)行url編碼,所以:

把搜索詞編碼之后,再附帶在Url之后,但是:Windows本地環(huán)境,ok,worked。但是,線上Linux環(huán)境,仍然不行。圍繞著是否正確了編碼,在QQ、Chrome、IE上反復(fù)嘗試了N次。結(jié)果,無論是否進(jìn)行url編碼,本地Windows的所有瀏覽器都能夠正常地傳遞中文參數(shù),線上Linux都失敗。既然不是URL編碼的問題,我覺得應(yīng)該是中文編碼的問題。(在初學(xué)JavaWeb開發(fā)的第1年,遇到了各種各樣的編碼問題,所以現(xiàn)在很有經(jīng)驗(yàn)了。)

String a = "?¨??o????";

byte[] b = a.getBytes("iso8859-1");

System.out.println(new String(b, "utf-8"));最終打印出來的是“程序員” ,這充分說明,linux線上環(huán)境是由于“中文編碼解碼不一致”導(dǎo)致的“亂碼問題”。

@RequestMapping("search")

public String search( String keyword)。最開始,我仍然搞錯(cuò)了一點(diǎn),以為keyword還是url編碼,還需要一次解碼。后來發(fā)現(xiàn),SpringMVC接收參數(shù)的時(shí)候,會(huì)自動(dòng)進(jìn)行url解碼,這個(gè)時(shí)候的keyword已經(jīng)是“字符”?了。我的解決方法:

log.info("searchKey=" + keyword);

searchService.search(luceneIndexDir, keyword, pageVo);

//可能是參數(shù)亂碼導(dǎo)致的

if (pageVo.getTotalCount() <= 0) {

//瀏覽器發(fā)送的中文參數(shù)雖然是url編碼的,但是spring也會(huì)自動(dòng)解碼,之所以亂碼,應(yīng)該是url編碼和url解碼的“字符集編碼”不同導(dǎo)致的。

//如果遇到這種情況,線上linux遇到了,再把iso5559-1的字符串轉(zhuǎn)換為utf-8的

log.info("search url iso8859-1,when in is:"+keyword);

byte[] b =keyword.getBytes("iso8859-1");

keyword=new String(b, "utf-8");

searchService.search(luceneIndexDir, keyword, pageVo);

log.info("search url iso8859-1,when out is:"+keyword);

}如果第一次,沒有查詢到任何結(jié)果,很有可能就是“中文亂碼”,再轉(zhuǎn)換成正確的字符,再查詢一次。

我的這種方法,真心不是最好的。但是,我暫時(shí)沒能嘗試出萬能的一次性解法,Windows上正常,Linux不正常,很難搞。只能,通過2次查詢來確保,不是由于亂碼,查詢不到內(nèi)容。

原文:http://blog.csdn.net/fansunion/article/details/41929563

總結(jié)

以上是生活随笔為你收集整理的liunx 上get 不到url参数 java_URL传递中文参数,大坑一枚,Windows与Linux效果竟然不一致...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。