javaweb响应数据时乱码的问题

在我做查询时,我查询数据库里的数据,成功的显示在页面中。可是我设置了错误提示,显示去页面的时候就出现了乱码问题。我的项目统一编码是utf-8,我的页面也设置了,在web.xml 也设置了。
我感到疑惑的是,为什么我在数据查出来的值到页面显示是编码正确的。而我在项目中定义的错误提示就是乱码。还有一个问题,我在输入的name值就是“帮助”,可是还是跟MicroMessageConstrations.NO_COMMAND_HELP不匹配
下面就是在service中定义的方法,还有错误提示所在数据。

对我的问题进行补充,我在项目中设置了错误提示。在service中的断点查看是没有问题的。就是在service返回到action时出现了乱码问题。好像是一个spring的动态代理事务让我的错误提示变为了乱码

public String findCommandByName(String name) {
        if (MicroMessageConstrations.NO_COMMAND_HELP.equals(name)) {    
            List<Command> listMessage = commandDao.findCommand(new Command());
            StringBuilder strBuil = new StringBuilder();
            for (int i = 0; i < listMessage.size(); i++) {
                if (i > 0) {
                    strBuil.append("<br/>");
                }
                strBuil.append("指令:"+listMessage.get(i).getName()+" 内容:"+listMessage.get(i).getDescription()+"");
            }
            return strBuil.toString();
        }
        Command command = commandDao.findCommandByName(name);
        if (command == null) {
            return MicroMessageConstrations.NO_COMMAND_MESSAGE;
        }
        new Random(command.getCommandContents().size());
        return command.getCommandContents().get(new Random().nextInt(command.getCommandContents().size())).getContent();
    }
    

public class MicroMessageConstrations {

    public static final String NO_COMMAND_HELP = "帮助";
    
    public static final String NO_COMMAND_MESSAGE = "没有这个值";

}
阅读 3.5k
3 个回答

经过我几次的尝试,终于找到了问题的所在。说出来可以都有点难以置信,这与spring的事务没有任何关系。
这是项目中的编码没有设置好的问题,我的项目虽然设置了统一编码。但是我没有设置.JAVA文件的编码,我的那些String类型的数据是在项目中设置的。这是我第一次使用eclipse开发,所以没有注意到这一点。下面是设置这个.java文件编码的方式:图片描述

是不是你的页面编码有问题

response.setContextType("text/plain");
response.setCaharset("UTF-8");

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题