日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tomcat乱码的几种解决

發布時間:2023/12/31 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tomcat乱码的几种解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

tomcat出現中文亂碼問題有以下幾種情況:

1.通過cmd啟動tomcat出現中文亂碼(tomcat日志輸出編碼與cmd編碼不一致)

cmd啟動tomcat出現中文亂碼

*亂碼原因*:這是由于windows下的cmd的默認編碼是GBK編碼,Tomcat控制臺默認輸出設置為UTF-8編碼

cmd屬性中的默認編碼為GBK

*解決方法*

  • (方式一)修改CMD命令行的編碼格式為UTF-8
  • (方式二)將tomcat控制臺日志輸出編碼格式更改為GBK,修改tomcat根目錄下conf/logging.properties文件中的ConsoleHandler.encoding=utf-8,這種方式能解決cmd控制臺中文亂碼,但不建議使用。因為更改了tomcat默認編碼,如果我們使用idea啟動tomcat,idea的默認編碼不是GBK,就會同樣產生idea控制臺下tomcat亂碼問題

修改tomcat日志配置文件

2.idea控制臺下的亂碼問題(idea控制臺編碼與tomcat不一致)

*解決辦法*
先檢查tomcat下conf/logging.properties配置文件
查看是否ConsoleHandler.encoding=utf-8,如果是則說明tomcat編碼沒有問題,出問題的是idea編碼,如果不等于utf-8,則改為utf-8.一般情況下此時可以正常輸出tomcat日志信息。

3.request請求參數中文亂碼問題:

request.getParameter()打印出來是亂碼
*原因一*:idea控制臺顯示編碼問題,idea的控制臺顯示使用的jvm默認編碼為win系統的GBK編碼,更改jvm編碼格式為UTF-8

//可以使用此方法測試自己的idea編碼格式 import java.nio.charset.Charset; public class Encoding {public static void main(String[] args) {System.out.println(Charset.defaultCharset().name());} }

解決辦法:

  • 找到兩個idea的vmoptions配置文件,在文件中追加-Dfile.encoding=UTF-8

  • 或者直接修改idea中的tomcat配置,在vm-options中添加

    -Dfile.encoding=UTF-8

    ,兩者效果相同,都是更改系統默認的GBK編碼

    修改idea的2個vm配置文件

    修改tomcat設置vm-options

    原因2

    :排除控制臺顯示問題之后,剩下的就是資源傳輸過程中產生的問題

  • 查看瀏覽器端發送的JSP/HTML的編碼格式是否為UTF-8,若不是,改為UTF-8

    JSP文件的編碼

  • 設置服務端的編碼,默認是ISO-8859-1

    • 對請求頭進行編碼轉換
      request.setCharacterEncoding("UTF-8");
      備注:該方法只對POST方式提交的數據有效,對GET方式提交的數據無效!
    • 對tomcat服務器server.xml文件設置編碼
      <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
      備注:該方法對任何時候起作用
    • 對請求參數進行編碼轉換
      String userName=request.getParamter("userName");
      userName=new String(userName.getByte("iso-8859-1"),"utf-8");

    4.response中文亂碼問題:

    ***亂碼原因:***服務器發給瀏覽器的數據默認是按照ISO-8859-1編碼,瀏覽器接收到數據后按照默認的字符集進行解碼后顯示,如果瀏覽器的默認解碼字符集不是ISO-8859-1,就出現亂碼。

  • 設置緩存區編碼格式為UTF-8,使用 setCharacterEncoding() 方法。
  • //設置緩存區編碼為UTF-8編碼格式 response.setCharacterEncoding("UTF-8");
  • 在響應中主動告訴瀏覽器使用UTF-8編碼格式接收數據,使用 setHeader() 方法。
  • //在響應中主動告訴瀏覽器使用UTF-8編碼格式來接收數據 response.setHeader("Content-Type", "text/html;charset=UTF-8");
  • 使用封裝類簡寫Content-Type,使用 setContentType() 方法則無需使用setCharacterEncoding() 方法,推薦使用這種方法。
  • //可以使用封裝類簡寫Content-Type,使用該方法則無需使用setCharacterEncoding response.setContentType("text/html;charset=UTF-8");

    作者:電腦死機了
    鏈接:https://www.jianshu.com/p/7236d45cd1eb
    來源:簡書
    response.setContentType(“text/html;charset=UTF-8”);

    作者:電腦死機了 鏈接:https://www.jianshu.com/p/7236d45cd1eb 來源:簡書 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

    總結

    以上是生活随笔為你收集整理的tomcat乱码的几种解决的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。