[英]Encoding UTF-8 in HTTPServlet request
這看起來像一個已經解決的問題,但是沒有解決,因為我已經解決了所有有關UTF-8的問題,而所有解決方案都沒有幫助我。
我正在使用JSON簡單庫將http請求發送到包含JSON對象的java servlet。
這是我的調度程序功能:
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
AjaxParser cr = AjaxParser.ClientRequestFactory();
ClientRequest msg = cr.ParseClientAjax(request);
HandleRequest HR = new HandleRequest();
HandleRequestStatus HRS = HR.HandleMessage(msg);
AjaxResponseGenerator ARG = new AjaxResponseGenerator();
JSONObject jsonObj = ARG.HandleResponse(HRS);
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json");
PrintWriter out = response.getWriter();
System.out.println(jsonObj);// write the json object to console
out.println(jsonObj);
}
這就是我解析為String的方式:
public ClientRequest ParseClientAjax(HttpServletRequest request) {
ClientRequest msg = new ClientRequest();
StringBuffer jb = new StringBuffer();
String line = null;
try {
BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null)
jb.append(line);
} catch (Exception e) {
e.printStackTrace();
}
JSONParser parser = new JSONParser();
try {
JSONObject obj = (JSONObject) parser.parse(jb.toString());
String opcodeString = (String) obj.get("opcode");
RequestCodeEnum numericEnumCode = (RequestCodeEnum) OpCodesMap
.get(opcodeString);
msg.setOpCode(numericEnumCode);
String entityStr = obj.get("Entity").toString();
Entity entity = makeEntityFromString(numericEnumCode, entityStr);
msg.setEntity(entity);
} catch (ParseException pe) {
System.out.println(pe);
}
return msg;
}
我嘗試通過打印到Eclipse控制台(我也將其更改為UTF-8編碼)進行調試,以檢查整個應用程序中發送的文本,以找出文本未正確編碼的位置,我發現文本在正確的位置。編碼,直到執行查詢之前。 之后,我手動檢查數據庫,並將文本作為問號插入那里。
我嘗試使用Workbench手動將非英語文本插入到數據庫中,無論是在數據庫本身中還是在隨后的HTML中顯示數據時,它都能正常工作。 僅當我從網頁中插入數據時,問題才會發生。
我被困住了,我不知道問題可能在哪里。
有什么建議么?
嘗試這個:
InputStream inputStream = request.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream , StandardCharsets.UTF_8));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.