使用的框架是Spring MVC, 由于必须从非context path下的特定路径
取得图档显示在画面上, 写了一个如文末附的method
在页面上 img的src指向controller后
透过传入实际路径来取得图档并扔给ServletOutputStream
目前的状况是 档案名称只包含英文跟数字的话没有问题 但只要含有中文时
request.getParameter("path")取得的变量就会有乱码
有试过request.setCharacterEncoding("UTF-8");
(其实有先print过request.getCharacterEncoding(), 已经是UTF-8)
也试过把${imgPath}给encode后 后端controller用
URLDecoder.decode(request.getParameter("path"),"UTF-8")
但无论怎试 出来的依然还是乱码 不知道是否有人碰过类似的问题?
该如何去设定encoding才能取得正确的包含中文的档名路径?
<img src="./myController?method=getImage&path=${imgPath}"/>
@RequestMapping(params = "method=getImage")
public void getImage(HttpServletResponse response ,HttpServletRequest
request) throws IOException{
String mimeType = context.getMimeType(request.getParameter("path"));
response.setContentType((mimeType != null) ? mimeType :
"application/octet-stream");
ServletOutputStream out = response.getOutputStream();
InputStream in = new FileInputStream(request.getParameter("path"));
IOUtils.copy(in, out);
in.close();
out.close();
}