https://blog.csdn.net/weixin_44745548/article/details/122395060目錄前言在IDEA中啟動(dòng)一個(gè)項(xiàng)目,又或者在bin目錄下啟動(dòng)startup.bat 一、亂碼原因系統(tǒng)CMD運(yùn)行時(shí)的編碼方式是GBK,而tomcat日志默認(rèn)編碼方式為UTF-8 二、解決方案本人使用tomcat 9版本 1.將tomcat日志配置改為GBK編碼(不推薦)打開tomcat的conf目錄,編輯logging.properties配置文件。 java.util.logging.ConsoleHandler.encoding = UTF-8 將UTF-8改為GBK即可 2.IDEA配置自定義VM選項(xiàng)
3.修改系統(tǒng)默認(rèn)編碼方式(本人使用)打開控制面板-> 區(qū)域-> 更改系統(tǒng)區(qū)域設(shè)置 勾選UTF-8即可 新打開cmd都是UTF-8的編碼方式 此時(shí)不論是IDEA還是直接使用startup.bat啟動(dòng),都不會(huì)亂碼 3.1尋找方法時(shí)的小插曲在尋找第三種方法時(shí)我曾查詢?nèi)绾问筩md永久保持UTF-8編碼
此方法百度經(jīng)驗(yàn)查詢獲得 下面引用CSDN另一個(gè)文章永久修改cmd編碼的文章
此博主方法沒有嘗試,因?yàn)槭莗owershell,效果不太確定 三、新問題tomcat日志正常,但是print中文亂碼2022/1/10又發(fā)現(xiàn)了新的問題,方法二和方法三需要混合使用 2022/1/11在學(xué)習(xí)tomcat的servlet時(shí)發(fā)現(xiàn) @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setCharacterEncoding('UTF-8'); resp.setContentType('text/html;charset=utf-8'); ServletContext context = this.getServletContext(); System.out.println('進(jìn)入了getdispatcher'); context.getRequestDispatcher('/gp').forward(req ,resp); String charset ='GBK'; //假定編碼格式 String str = '中文'; boolean flag = str.equals(new String(str.getBytes(),charset)); System.out.println(flag); System.out.println('當(dāng)前JRE:' + System.getProperty('java.version')); System.out.println('當(dāng)前JVM的默認(rèn)字符集:' + Charset.defaultCharset()); } 但是如果離開server環(huán)境單獨(dú)測(cè)試時(shí)卻不同 import java.io.UnsupportedEncodingException;import java.nio.charset.Charset;public class TestCharacter {
public static void test(){
System.out.println('當(dāng)前JRE:' + System.getProperty('java.version'));
System.out.println('當(dāng)前JVM的默認(rèn)字符集:' + Charset.defaultCharset());
}
public static void test2(){
String charset ='GBK'; //假定編碼格式
String str = '中文';
boolean flag = true;
try {
flag = str.equals(new String(str.getBytes(),charset));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println(flag);
}
public static void main(String[] args) {
test();
test2();
}} 會(huì)出現(xiàn)這樣的結(jié)果 最后百度增加了環(huán)境變量 test1:測(cè)試條件:
test2:測(cè)試條件: 測(cè)試結(jié)果 注意所有測(cè)試前提,都是已經(jīng)全部設(shè)置為UTF-8環(huán)境的,包括一開始出錯(cuò) 結(jié)論:也就是說只需要設(shè)置一個(gè)環(huán)境變量就可以代替tomcat和VM options配置 |
|