在学习JAVA web的时候碰到了tomcat在IDEA中启动乱码的问题
网上查到一篇文章讲IDEA乱码问题:IDEA乱码问题,原因&解决方式_intellij-idea_sup_meiko-开放原子开发者工作坊根据这篇文章成功解决了tomcat乱码的问题。
通过下面的代码可以知道控制台输出的解码类型
System.out.println(System.getProperty("file.encoding"));
我的电脑显示的是UTF-8,所以控制台默认的解码类型是UTF-8。
然后对照上面的表格(可以打印输出 0信1息2信息3),然后对照乱码的字体,说明tomcat控制台的编码方式是GBK。tomcat路径下, \conf\logging.properties配置, 和控制台有关的是Handler:java.util.logging.ConsoleHandler.encoding。
把上面java.util.logging.ConsoleHandler.encoding = GBK改成java.util.logging.ConsoleHandler.encoding = UTF-8就成功解决乱码问题了。
在学习Servlet的时候又碰到了乱码问题,这次是访问网页时用get方式获取请求时的字符串,网址?后面设置的请求头为中文时输出的就是乱码,甚至用输出语句输出中文时也是乱码。原因是JVM默认的文件编码是 GBK,将run->Edit Configurations->VM options添加参数: -Dfile.encoding=UTF-8。乱码问题就解决了。
但是问题是,我在之前建立的JAVA类项目中并没有设置VM options的参数,但是控制台依旧能正常输出显示中文,这可能是因为IDEA 使用了 UTF-8 编码处理控制台输出,但是JAVA web项目并没有。
而如果用post方式获取请求时的字符串,需要在代码中加入来解决乱码问题。
req.setCharacterEncoding("UTF-8");