『壹』 java url中有中文 傳到後台有亂碼 怎麼改 亂碼是
你這個問題真心不好辦,建議你把頁面編碼改為GBK編碼把。像樓上說的這些方法專看屬似行得通,原理就是把utf-8轉為gbk然後再轉回utf-8,但那樣是不能解決問題的,試圖通過String newStr = new String(str.getBytes("gbk","utf-8"));辦不到的,結果是中文字元為奇數會出現最後一個字亂碼。我以前也曾碰到這個情況,最後還是把頁面統一編碼解決。
『貳』 發布到linux伺服器出現頁面傳入後台的漢字亂碼
首先我是用idea開發的,我的需求是在將java項目部署到伺服器上,去調取數據,在用?id=北京 這種傳參時,linux伺服器出現亂碼,最後試了多種方法,僅供參考
頁面pageEncoding = "utf-8" charset="utf-8"
(1)server.xml 配置埠號出配置 URIEncoding = "UTF-8" 這是針對瀏覽器的編碼
還有個參數 useBodyEncodingForURI = "true"; 暫時沒搞清是什麼
(2)web.xml 中的字元集過濾器 是針對springMVC的字元集
(3) url 中 ?拼接的參數 不會經過字元集攔截器 重定向中可以使用ModelAndView 的對象,
ModelAndView mv = new ModelAndView("redirect:/index.do");
mv.addObject("id",id);
(4)自定義攔截器
①寫一個實現了 HandlerInterceptorAdpter 的攔截器 並且手動實現 preHandle() return true;
② springMVC配置文件中配置
<mvc:interceptors>
<bean id="idInterceptor" class="app.plant.interceptor.IdInterceptor"></bean>
</mvc:interceptors>
③指定字元集
String id = request.getParameter("id");
if(id != null){
id = new String(id.getBytes("iso-8859-1"),"utf-8");
request.setAttribute("id",id);
}
return true;
『叄』 jspsmartupload上傳的文件名是亂碼怎麼辦
方法一:(之前在頁面直接跳轉上傳時能夠解決問題,非同步提交上傳圖片就不能正常了)
1.解決中文亂碼:
【1】:首先上傳頁面和接收頁面都必須制定編碼格式為GBK;
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
【2】:在上傳頁面要response.setCharacterEncoding("GBK");
【3】:在接收頁面要request.setCharacterEncoding("GBK");
【4】:注意上傳時表單要指定編碼為:enctype="multipart/form-data"
【5】:注意上傳時表單要指定方法為:method="post"
方法二:(非同步提交表單能正常解決)
【1】上傳頁面:(對參數做一次encodeURI)js
//對表單中的中文區域值得獲取並進行轉碼
var name = parent.window.$("#tabs_name").val();
var direction = parent.window.$("#tabs_direction").val();
parent.window.$("#tabs_name").val( encodeURI(name));
parent.window.$("#tabs_direction").val( encodeURI(direction));
parent.window.$('#subject_modify').submit(); //提交表單
【2】接收參數頁面(對參數做一次URLDecoder)
String name = smart.getRequest().getParameter("name");
name = URLDecoder.decode(name,"utf-8");
『肆』 為什麼上傳文件的文件名變成亂碼
對於正常的文件在上傳後,文件名不會有變化。
對於鏈接文件,在上傳後,系統上傳的是鏈接的目的文件,所以文件名有變化。對於鏈接文件,如果是鏈接到本地的文件,則實際上傳的是鏈接到的具體文件,文件名也是那個文件名;如果是鏈接到一個網頁,則實際上傳的就是那個網頁,文件名則是網址了。
對於出現的所謂的亂碼,其實就是那個網頁的實際網址。所以建議不要上傳鏈接文件。