本文目錄一覽:
- 1、為什麼java編程中寫的漢字變成亂碼了???
- 2、[Java]如何解決亂碼問題
- 3、java中文亂碼,能說下string.getBytes()和new String()轉碼是,具體點。
- 4、如何解決JavaEE開發中字元編碼出現亂碼問題
為什麼java編程中寫的漢字變成亂碼了???
你的編碼格式選擇的不對,右鍵單擊項目,點擊Properties:
將格式換成GBK或者UTF-8就行了
[Java]如何解決亂碼問題
亂碼的話,分為幾個位置的亂碼。
一、是JSP頁面亂碼問題,
解決方式:%@ page language=”java” contentType=”text/html; charset=UTF-8″
pageEncoding=”UTF-8″%
二、後台向前端傳輸字元串的的亂碼
解決方式: response.setContentType(“text/html;charset=UTF-8”);
response.setCharacterEncoding(“UTF-8”);
三、Ajax非同步傳參時的亂碼問題
解決方法:contentType:”application/x-www-form-urlencoded; charset=utf-8″,
四、myEclips或Eclips打開文件時亂碼
解決方法:右鍵該文件-porperties-把該文件調為UTF-8的格式
純手寫,請給採納
java中文亂碼,能說下string.getBytes()和new String()轉碼是,具體點。
1、Java中,【String.getBytes(String decode)】的方法,會根據指定的decode,編碼返回某字元串在該編碼下的byte數組表示,例如:
byte[] b_gbk = “中”.getBytes(“GBK”);
byte[] b_utf8 = “中”.getBytes(“UTF-8”);
byte[] b_iso88591 = “中”.getBytes(“ISO8859-1”)
上面三行代碼表示:分別返回「中」這個漢字在GBK、UTF-8和ISO8859-1編碼下的byte數組表示,此時b_gbk的長度為2,b_utf8的長度為3,b_iso88591的長度為1。
2、而通過【new String(byte[], decode)】的方式來還原這個「中」字時,實際是使用decode指定的編碼來將byte[ ]解析成字元串,例如:
String s_gbk = new String(b_gbk,”GBK”);
String s_utf8 = new String(b_utf8,”UTF-8″);
String s_iso88591 = new String(b_iso88591,”ISO8859-1″);
s_gbk和s_utf8都是「中」,而只有s_iso88591是一個不認識 的字元,因為ISO8859-1編碼的編碼表中,根本就沒有包含漢字字元,當然也就無法通過”中”.getBytes(“ISO8859-1”)。
因此,通過【String.getBytes(String decode)】方法來得到byte[ ]時,要確定decode的編碼表中確實存在String表示的碼值,這樣得到的byte[ ]數組才能正確被還原。
擴展資料
java中文編碼避免亂碼
1、為了讓中文字元適應某些特殊要求(如http header頭要求其內容必須為iso8859-1編碼),可能會通過將中文字元按照位元組方式來編碼的情況,比如:
String s_iso88591 = new String(“中”.getBytes(“UTF-8″),”ISO8859-1”)
2、上述例子中的s_iso8859-1字元串實際是三個在 ISO8859-1中的字元,在將這些字元傳遞到目的地後,目的地程序再通過相反的方式:
String s_utf8 = new String(s_iso88591.getBytes(“ISO8859-1″),”UTF-8”)
來得到正確的中文漢字。這樣就既保證了遵守協 議規定、也支持中文。
3、String.getBytes(String decode)方法會根據指定的decode編碼返回某字元串在該編碼下的byte數組表示這裡是encode ,not decode,從字元串到位元組數組是編碼的過程,從位元組數組到字元串(即 new String(byte[] , charsetname))才是解碼的過程。
參考資料:百度百科-UTF-8
如何解決JavaEE開發中字元編碼出現亂碼問題
1、瀏覽器調用jsp,html等頁面中文顯示亂碼
此情況需滿足兩個要求:
(1)文件本身是以utf-8編輯保存的(myEclipse中在properties中滑鼠右鍵選擇utf-8)
(2)瀏覽器用utf-8解析:
(手動)== 在瀏覽器中右鍵選擇編碼格式為utf-8
(智能)== 在文件中寫入如: meta name=”content-type” content=”text/html; charset=UTF-8″ 通過meta標籤模擬response頭,起到告訴瀏覽器用utf-8的編碼解析
(智能)== response.setContentType(“text/html;charset=UTF-8”);起到告訴瀏覽器用utf-8的編碼解析
常用:
meta name=”content-type” content=”text/html; charset=UTF-8″或meta charset=”utf-8″
%@ pageEncoding=”utf-8″%
?xml encoding=”UTF-8″?
2、通過瀏覽器調用servlet,頁面顯示亂碼。
Servlet亂碼分為request亂碼和response亂碼;
(1)response亂碼問題
解決方法:
在網上很有效的解決方法是添加:
response.setCharacterEncoding(“UTF-8”);
解決不了,後來又搜到一條解決方法是:
response.setContentType(“text/html;charset=utf-8”);或者 response.setHeader(“content-type”,”text/html;charset=UTF-8″);告訴瀏覽器用utf-8解析。(setHeader是HttpServletResponse的方法。如果想在攔截器Filter中設置字元編碼,則無此方法,因為Filter的doFilter方法的參數類型是ServletResponse)
兩句都填上,後來終於解決了這個問題;
其實我們應該思考一下本質:
response.setContentType(“text/html;charset=UTF-8”); 目的是為了控制瀏覽器的行為,即控制瀏覽器用UTF-8進行解碼;
response.setCharacterEncoding(“UTF-8”);目的是用於response.getWriter()輸出的字元流的亂碼問題。如果是response.getOutputStream()是不需要此種解決方案的,因為這句話的意思是為了將response對象中的數據以UTF-8解碼後的位元組流發向瀏覽器;
原創文章,作者:W7CQW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/130844.html