SWFUpload文件上傳時從後臺返回中文亂碼的問題

SWFUpload是一款使用Flash和Javascript開發的文件上傳工具,最近在使用其實現文件上傳功能時,發現從後臺返回的中文常常亂碼。
java

SWFUpload上傳成功後,對後臺返回結果的處理方法是:ide

function uploadSuccess(file, serverData) {
  ......
}

其中file是上傳文件信息,serverData是從後臺返回的數據。咱們發現serverData中的中文出現亂碼。然後臺處理圖片上傳的Struts2 Action類返回時的代碼以下:工具

servletResponse.getOutputStream().println(serverData);

後來發現就是上面這個地方出了問題。以前使用的是ServletOutputStream字節流的println方法,這個方法會將serverData字符串按照默認編碼轉化爲字節流,而SWFUpload使用的是UTF-8編碼,從而致使編碼不一致,引發中文亂碼。編碼

後來想了兩個解決方法:server

1)對於字節流,手工對serverData按照UTF-8進行編碼,並採用write方法輸出字節流;圖片

servletResponse.getOutputStream().write(serverData.getBytes("UTF-8"));

2)採用字符流,並指定字符流的編碼爲UTF-8。ip

servletResponse.setCharacterEncoding("UTF-8");
servletResponse.getWriter().print(serverData);
相關文章
相關標籤/搜索