首先最近我出現了這個問題,稍微測試了下,找到了這個問題.此方法適用很多情況,特此記錄.
首先明白亂碼,?等出現的原因:
編碼格式(utf-8等)不對,導致顯示出現問題.
依次排除4步走:前端,後臺 ,連接傳輸,數據庫(以下編碼按UTF-8爲例)
1.前端
獲取數據,將界面格式改爲UTF-8,如jsp中
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
確保界面等爲UTF-8格式
2.後臺
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
直接全部設置爲UTF-8,就不用考慮後臺了
測試方法:
response.getWriter().append("這是UTF-8的輸出");
3.連接
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
將連接傳輸編碼改爲UTF-8,保證傳輸無誤
4.數據庫
確保表的字段屬性爲varchar可顯示中文屬性
測試:修改某條記錄中的值,看看是否顯示中文
寫代碼時連接時加上useUnicode=true&characterEncoding=utf8,建庫建表也使用UTF-8,後臺加上request.setCharacterEncoding("UTF-8");基本上就不出現亂碼了