字符編碼解碼
基本概念介紹
編碼:是信息從一種形式或格式轉(zhuǎn)換為另一種形式的過程也稱為計算機(jī)編程語言的代碼簡稱編碼纺阔。用預(yù)先規(guī)定的方法將文字瓷蛙、數(shù)字或其它對象編成數(shù)碼转绷,或?qū)⑿畔⑽凹?shù)據(jù)轉(zhuǎn)換成規(guī)定的電脈沖信號
解碼:是編碼的逆過程
字符編碼:從數(shù)字(字符)到字節(jié)數(shù)組(二進(jìn)制)
字符解碼:從字節(jié)數(shù)組(二進(jìn)制)到數(shù)字(字符)
字符轉(zhuǎn)碼:字符集的轉(zhuǎn)換,需要經(jīng)過解碼和編碼過程
字符亂碼:沒有正確字符編碼或者在字符解碼時使用了與編碼不一致的字符集導(dǎo)致的錯誤顯示出無意義的字符
字符集合:是一組形狀的集合议经,一般存儲于字庫中斧账,例如所有漢字的集合
編碼字符集:是一組字符對應(yīng)的編碼(即數(shù)字),為字符集合中的每一個字符給予一個數(shù)字煞肾。例如最早的編碼字符集ASCII咧织,Unicode(UCS)
字符編碼方案:將字符編碼(數(shù)字)映射到一個字節(jié)數(shù)組的方案。例如UTF
字符集:是編碼字符集和字符編碼方案的組合籍救。例如GBK习绢,UTF-8
字符亂碼問題
情景分析
操作系統(tǒng)(Windows,Linux)蝙昙,程序軟件(開發(fā)工具闪萄,編譯器,瀏覽器)奇颠,文件(.txt败去,.jsp),輸入和輸出(字節(jié)流烈拒,字符流)
圖解
java亂碼情景
Windows默認(rèn)GBK字符集圆裕,Linux默認(rèn)UTF-8
Eclipse自定義設(shè)置,
MySQL自定義設(shè)置荆几,
Tomcat默認(rèn)是ISO8859-1在server.xml配置:<Connector?port="8080" ...?URIEncoding="UTF-8"/>
javac編譯時指定葫辐,
JSP:<%@ page language=“java” contentType=“text/html; charset=UTF-8″??? pageEncoding=“UTF-8″%>
????????pageEncoding表明該JSP文件自身采用的編碼格式,在流中以及磁盤上都用此編碼格式完成字符流向字節(jié)流的轉(zhuǎn)換伴郁,告訴服務(wù)器使用什么編碼翻譯jsp文件成java文件
????????contentType="text/html;charset=utf-8"服務(wù)器發(fā)送瀏覽器的數(shù)據(jù)類型和內(nèi)容編碼
????????charset屬性指定Tomcat返回響應(yīng)時采用的編碼,也是post方式提交參數(shù)的編碼方式
HTML:
JAVA:java變量保存轉(zhuǎn)換bytes-->encode字符-->Unicode字符的轉(zhuǎn)換
字節(jié)流蛋叼,字符流
POST請求配置:response.setCharcacterEncoding("utf-8")