開發中常遇到各類中文亂碼不多心煩,這裏總結了各類中文亂碼http://www.javashuo.com/article/p-kzancbil-ch.htmljavascript
下面以SpringMVC遇到的中文亂碼爲例詳解html
首先上代碼java
前臺:jquery
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> <table width="100%" border="1" cellspacing="1" cellpadding="0"> <tr> <td><a href="#" onclick="add()">添加</a></td> <td><a href="#" onclick="del()">刪除</a></td> <td><a href="#" onclick="select()">查詢</a></td> <td><a href="#" onclick="update()">修改</a></td> </tr> </table> <script type="text/javascript"> function add(){ $.ajax({ type:"POST", url:"lll.do", data:{id:"添加11111111111"}}); } function del(){ $.ajax({ type:"DELETE", url:"lll.do", data:{id:"刪除11111111111"}}); } function select(){ $.ajax({ type:"GET", url:"lll.do", data:{id:"查詢3333333333"}}); } function update(){ $.ajax({ type:"PUT", url:"lll.do", data:{id:"修改4444444"}}); } </script>
前臺代碼很是簡單,主要是是個按鈕,分別觸發四個ajax請求,請求路徑同樣,只是請求方式不同ajax
GET(SELECT):從服務器查詢,能夠在服務器經過請求的參數區分查詢的方式。
POST(CREATE):在服務器新建一個資源,調用insert操做。
PUT(UPDATE):在服務器更新資源,調用update操做。
DELETE(DELETE):從服務器刪除資源,調用delete語句
再看後臺代碼:數據庫
@RequestMapping(value = "/lll.do", method = RequestMethod.DELETE) @ResponseBody public String test(String id){ System.out.println("刪除"); System.out.println(id); return id; } @RequestMapping(value = "/lll.do", method = RequestMethod.POST) @ResponseBody public String test1(String id){ System.out.println("添加"); System.out.println(id); return id; } @RequestMapping(value = "/lll.do", method = RequestMethod.PUT) @ResponseBody public String test2(String id){ System.out.println("修改"); System.out.println(id); return id; } @RequestMapping(value = "/lll.do", method = RequestMethod.GET) @ResponseBody public String test3(String id){ System.out.println("查詢"); System.out.println(id); return id; }
四個方法分別對應增刪改查,只是簡單的輸出一下,想要數據庫操做自行定義service和dao吧,相信難不倒你們。apache
分別點擊增刪改查按鈕,控制檯結果以下:tomcat
添加 //post 添加11111111111 刪除 //delete null 修改 //put null 查詢 //get æ¥è¯¢3333333333
這是不加任何配置和字符過濾器的結果服務器
那麼怎麼處理這些亂碼呢?app
相信你們對get的請求的亂碼最爲熟悉,對於這種亂碼處理結果有三種分別是設置服務器編碼方式、進行URL編碼和接收參數時設置參數編碼,詳細可見個人上篇博客,連接開頭已給出
解決辦法:這裏我用的是meavn搭建的項目,使用的是tomcat7-maven-plugin插件,全部直接在插件裏配置
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!--配置端口號--> <port>8080</port> <!--配置訪問路徑,此處配置爲根目錄,即http://localhost/--> <path>/SSM</path> <uriEncoding>UTF-8</uriEncoding>//這裏配置插件的編碼方式 </configuration> </plugin>
配置完,從新啓動再次點擊查詢結果以下:
查詢
查詢3333333333
而PUT和DELETE方式接收的參數爲null,怎麼辦呢?
能夠在參數前面加入@RequestBody註解,爲何加這個註解呢?他有什麼用?詳解參考個人這篇博客http://www.javashuo.com/article/p-rxoskkrr-bz.html
//加入@RequestBody (@RequestBody String id) 結果以下: 刪除 id=%E5%88%A0%E9%99%A411111111111 修改 id=%E4%BF%AE%E6%94%B94444444
值是有了,可是仍是亂碼?看的真心煩,因爲@RequestBody接收的是請求體中的JSON字符串,而我上傳的是JSON對象,那怎麼把JSON對象轉化成JSON字符串呢?
那就辦法多了,這裏列出兩種方法:
方法一: function del(){ var data={id:"刪除11111111111"}; $.ajax({ type:"DELETE", url:"lll.do", data:JSON.stringify(data)//使用JSON.stringify()將JSON對象轉化成JSON字符串 }); } 方法二: function update(){ var data='{id:"刪除11111111111"}';//直接定義JSON字符串 $.ajax({ type:"PUT", url:"lll.do", data:data}); }
看到全部的亂碼都解決了,內心美滋滋!!!
查詢 查詢3333333333 添加 添加11111111111 修改 {id:"刪除11111111111"} 刪除 {"id":"刪除11111111111"}