導航:首頁 > 編程語言 > java中文亂碼tomcat

java中文亂碼tomcat

發布時間:2021-04-18 03:56:09

Ⅰ 關於jsp被tomcat編譯後的網頁出現漢字亂碼。

jsp亂碼原因主要有兩方面,java和JSP文件本身編譯時產生的亂碼問題和Java程序於其他媒介交互產生的亂碼問題。
一、首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基於位元組流的,如果Java和JSP編譯成class文件過程中,使用的編碼方式與源文件的編碼不一致,就會出現亂碼。
基於這種亂碼,建議在Java文件中盡量不要寫中文(注釋部分不參與編譯,寫中文沒關系),如果必須寫的話,盡量手動帶參數-ecoding GBK或-ecoding gb2312編譯;對於JSP,在文件頭加上<%@ page contentType="text/html;charset=GBK"%>或<%@ page contentType="text/html;charset=gb2312"%>基本上就能解決這類亂碼問題。
重點介紹第二類亂碼,即Java程序與其他存儲媒介交互時產生的亂碼。很多存儲媒介,如資料庫,文件,流等的存儲方式都是基於位元組流的,Java程序與這些媒介交互時就會發生字元(char)與位元組(byte)之間的轉換,例如從頁面提交表單中提交的數據在Java程序里顯示亂碼等情況。
如果在以上轉換過程中使用的編碼方式與位元組原有的編碼不一致,很可能就會出現亂碼。
二、解決方法
對於流行的Tomcat來說,有以下兩種解決方法:
1) 更改 D:\Tomcat\conf\server.xml,指定瀏覽器的編碼格式為「簡體中文」:
方法是找到 server.xml 中的
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK' />
可以這樣驗證你的更改是否成功:在更改前,在你出現亂碼的頁面的IE瀏覽器,點擊菜單「查看|編碼」,會發現「西歐(ISO)」處於選中狀態。而更改後,點擊菜單「查看|編碼」,會發現「簡體中文(GB2312)」處於選中狀態。
b)java程序要這么修改:
public class ThreeParams extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=GBK");
...
}
}
response.setContentType("text/html; charset=GBK");這句話的作用是讓瀏覽器把Unicode字元轉換為GBK字元。這樣頁面的內容和瀏覽器的顯示模式都設成了GBK,就不會亂碼了。

Ⅱ java中tomcat啟動時log4j中文亂碼如何處理

是因為輸出日誌的編碼和當前系統的編碼不一樣

Ⅲ java中中文出現亂碼是怎麼回事

你是用Eclipse開發的嗎?是的話在首選項選擇編碼格式,一般都是GBK和UTF-8,切換就行了

Ⅳ Servlet + Tomcat 中文亂碼的解決方法

亂碼的本質原因是Servlet打出來的字元的編碼與你瀏覽器自動選擇的編碼不一致,默認情況下用戶的瀏覽器的編碼是「自動選擇」的。所以對於亂碼的問題,首先要搞清楚servlet裡面的string是用什麼編碼print給瀏覽器的,明確了這一點,就應該setContentType("text/html; charset=你的編碼"),來告訴瀏覽器,如果是html,最好在meta裡面指定,瀏覽器更優先看meta

Ⅳ 怎麼配置java中tomcat的編碼

在tomcat 的server.xml 中配置。

<Connectorport="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443"/>

Ⅵ java web運行在tomcat伺服器上,提交給伺服器的漢字亂碼,怎麼解決

web中部署,使用 filter去做轉換成utf-8就容易得多了
~
~
~~~~~~~~~~~~~

Ⅶ javaweb怎麼處理中文亂碼問題

中文亂碼問題真的是一個很棘手的問題,特別是從前台傳到後台之後,都不知道問題出在哪裡了。現在分享解決javaWEB中前後台中文亂碼問題的3種方法。
方法一:
tomcat的自帶編碼是ISO-8859-1的格式,是不兼容中文的編碼的。所以我們從後台接收的時候要注意。
採用相同的格式去接收(ISO-8859-1),然後用能解析的編碼(utf-8)去轉換。這樣我們就能得到能兼容中文的格式了。這樣處理之後發往前台。注意:發往前台的時候也需要設置一下
resp.setContentType("text/html;charset=utf-8");//設置頁面的字元編碼,解決界面顯示中文亂碼的問題
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//因為tomcat自帶編碼是ISO-8859-1格式

//解決亂碼方法之一
<span style="white-space:pre"> </span>String name=req.getParameter("username");
<span style="white-space:pre"> </span>String pwd=req.getParameter("pwd");
<span style="white-space:pre"> </span>byte[] b=name.getBytes("ISO-8859-1");//用tomcat的格式(iso-8859-1)方式去讀。
<span style="white-space:pre"> </span>String str=new String(b,"utf-8");//採用utf-8去接string
<span style="white-space:pre"> </span>resp.setContentType("text/html;charset=utf-8");//設置頁面的字元編碼<span style="white-space:pre"> </span>

<span style="white-space:pre"> </span>PrintWriter pw =resp.getWriter();
<span style="white-space:pre"> </span>String str1="<html><body><font size='5px' color='red'>username:"+name+"pwd:"+pwd+"</font></body></html>";
<span style="white-space:pre"> </span>pw.print(str1);
PrintWriter pw =resp.getWriter();
String str1="<html><body><font size='5px' color='red'>username:"+name+"pwd:"+pwd+"</font></body></html>";
pw.print(str1);

方法二:
由於方法一比較繁瑣,採用用了簡單的設置。只需要簡單的一句就可以搞定
req.setCharacterEncoding("utf-8");//必須寫在第一位,因為採用這種方式去讀取數據,否則數據會出錯。
這樣就不用像之前的那樣繁瑣的設置了

protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//因為tomcat自帶編碼是ISO-8859-1格式

//解決亂碼二《法一比較繁瑣》
req.setCharacterEncoding("utf-8");//必須寫在第一位,因為採用這種方式去讀取數據,否

則數據會出錯。
//設置這樣方式去讀。這樣中文就能夠讀取出來了,但是需要注意。表單的發送方式必須是<span style="color:#ff0000;"> method='post'</span>
resp.setContentType("text/html;charset=utf-8");//設置傳過去的頁面顯示的編碼
String name=req.getParameter("username");
String pwd=req.getParameter("pwd");
PrintWriter pw =resp.getWriter();
String str1="<html><body><font size='5px' color='red'>username:"+name+"pwd:"+pwd+"</font></body></html>";
pw.print(str1);

方法三:
這是在法二的基礎上修改的。雖然我們能修改編碼格式去讀,但是考慮到用戶肯定不會修改,所以我們需要採用比較通用的辦法,讓用戶修改配置文件。也就是web.xml文件
需要修改web.xml裡面的內容,就是說,字元編碼從xml接收過來。需要在xml文件中配置參數。
代碼如下:

<servlet>
<servlet-name>Encodeing</servlet-name>
<servlet-class>cn.hncu.com.encode.Encodeing</servlet-class>
<init-param>
<param-name>charset</param-name>
<param-value>utf-8</param-value>//這裡面的內容可供用戶自己填寫(必須是編碼格式)
</init-param>
</servlet>

我們知道前台和後台進行交換必須經過web.xml配置
我們需要獲取web.xml的設置的參數

public void init(ServletConfig config) throws ServletException {
charset=config.getInitParameter("charset");//獲得初始化參數。當然charset需要設置為全局變數。後面的service函數需要設置req.setCharacterEncoding(charset);
}

req.setCharacterEncoding(charset);
resp.setContentType("text/html;charset=utf-8");
String name=req.getParameter("username");
String pwd=req.getParameter("pwd");

PrintWriter pw =resp.getWriter();
String str1="<html><body><font size='5px' color='red'>username:"+name+"pwd:"+pwd+"</font></body></html>";
pw.print(str1);

Ⅷ javaweb怎麼處理中文亂碼

1.UTF-8國際編碼,GBK中文編碼。GBK包含GB2312,即如果通過GB2312編碼後可以通過GBK解碼,反之可能不成立;

2、web tomcat:默認是ISO8859-1,不支持中文的

3.java.nio.charset.Charset.defaultCharset()獲得平台默認字元編碼;

4.getBytes() 是通過平台默認字元集進行編碼;

二、引入

在學習任何一門技術時,經常會有初學者遇到中文亂碼問題,比如MySQL,是因為在安裝時沒有設置;而在Servlet中,也會遇到中文亂碼問題;

比如:

OutputStream out = response.getOutputStream();

out.write(String );

輸出中文時可能會出現亂碼;

比如:

[java]view plain

Ⅸ 如何解決Tomcat下中文亂碼問題

對於流行的Tomcat來說,有以下兩種解決方法:
1) 更改 D:\Tomcat\conf\server.xml,指定瀏覽器的編碼格式為「簡體中文」:
方法是找到 server.xml 中的
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK' />

標記,粗體字是我添加的。
可以這樣驗證你的更改是否成功:在更改前,在你出現亂碼的頁面的IE瀏覽器,點擊菜單「查看|編碼」,會發現「西歐(ISO)」處於選中狀態。而更改後,點擊菜單「查看|編碼」,會發現「簡體中文(GB2312)」處於選中狀態。
b)更該 Java 程序,我的程序是這樣的:
public class ThreeParams extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=GBK");
...
}
}

粗體字是必需要有的,它的作用是讓瀏覽器把Unicode字元轉換為GBK字元。這樣頁面的內容和瀏覽器的顯示模式都設成了GBK,就不會亂碼了。

Ⅹ 關於javaweb項目在linux下tomcat亂碼

1.如果你的是Tomcat伺服器,在Linux伺服器上找到你的Tomcat伺服器下的bin目錄中的Catalina.sh文件,編輯它,在裡面的JAVA_OPTS變數中添加「-Dfile.encoding=GBK -Dsun.jnu.encoding=GBK」,記住,一定是GBK的
2.如果是Jboss伺服器,那麼也是在bin目錄下,但是是修改run.conf文件,也是在JAVA_OPTS變數中添加「-Dfile.encoding=GBK -Dsun.jnu.encoding=GBK」。
修改好後,保存,重啟伺服器,搞定。望採納,謝謝。

閱讀全文

與java中文亂碼tomcat相關的資料

熱點內容
大病籌錢app哪個好 瀏覽:457
大數據錯亂哪裡可以借到 瀏覽:523
obs配置文件夾 瀏覽:458
英語四級考試看什麼app比較好 瀏覽:702
列印ps文件怎麼保存 瀏覽:518
啟動器配置文件損壞怎麼辦 瀏覽:86
dwg文件保護 瀏覽:36
iphone5s廣告音樂 瀏覽:313
dataset第一列數據怎麼取 瀏覽:346
怎樣修改資料庫的編碼格式 瀏覽:590
iphone4s有什麼實用的軟體 瀏覽:675
微博怎麼用電腦改密碼忘了怎麼辦 瀏覽:264
h1z1配置文件怎麼調 瀏覽:524
開機不選擇系統文件系統 瀏覽:612
網路廣告的發展前景 瀏覽:430
iphone4s錄音 瀏覽:651
off文件格式 瀏覽:488
鋼筆工具確定選區 瀏覽:922
win10虛擬ram怎麼設置 瀏覽:607
蘋果手機怎麼開通app的許可權 瀏覽:764

友情鏈接