求源代碼:
我們這里先提供請(qǐng)求方法的源代碼:
Java
方案一
通過(guò)以上代碼,我們能清楚在map對(duì)象中的name的話,是不會(huì)出現(xiàn)亂碼的,那么就在返回的時(shí)候,response,并沒(méi)有設(shè)置編碼,那么怎么在返回的時(shí)候,指定編碼呢,只需要稍微修改上面的代碼即可:
Java
在這里我們手動(dòng)配置了utf-8編碼。
方案二
我們先說(shuō)說(shuō)方案一存在的問(wèn)題:
(1)編碼不方便,每個(gè)開(kāi)發(fā)人員都需要進(jìn)行編碼;
(2)編碼調(diào)整或者是后期發(fā)現(xiàn)中文,要調(diào)整的地方比較多;
(3)代碼侵入性太強(qiáng);
那么我們有更好的方案嘛,當(dāng)然有,只需要在application.properties配置兩個(gè)信息:
Java
到這里就可以完美解決中文亂碼問(wèn)題。
Java學(xué)習(xí)資料獲取(復(fù)制下段連接至瀏覽器即可)
data:text/html;charset=UTF-8;base64,5p625p6E5biI5a2m5Lmg6LWE5paZ5YWN6LS56aKG5Y+W6K+35Yqg5omj5omj5Y+35pivMTAxODkyNTc4MA==
clipse運(yùn)行頁(yè)面顯示中文亂碼
頁(yè)面源碼
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="ISO-8859-1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>客戶列表-BootCRM</title>
</head>
<body>
<h1>解決中文亂碼</h1>
</body>
</html>
tomcat運(yùn)行后
打開(kāi)瀏覽器地址欄打就會(huì)出現(xiàn)亂碼現(xiàn)象
分析問(wèn)題
首先排查一下服務(wù)器是否啟動(dòng),回看console最下面 server startup 表示服務(wù)器已經(jīng)啟動(dòng)了 沒(méi)有問(wèn)題也沒(méi)有報(bào)錯(cuò)。
其次查看頁(yè)面源碼,發(fā)現(xiàn)有三處編碼為ISO-8859-1。
注意:數(shù)字英文都正常顯示,只是中文亂碼,是因?yàn)镮SO-8859-1是單字節(jié)編碼,此字符集支持部分于歐洲使用的語(yǔ)言,這個(gè)編碼不支持中文,所以要換支持的編碼啦,現(xiàn)在一般都通用UTF-8,因?yàn)镮SO-8859-1是一個(gè)8位的容器。因?yàn)橹挥?位, 沒(méi)那么多地方可以表示中文,但是,由于是單字節(jié)編碼,和計(jì)算機(jī)最基礎(chǔ)的表示單位一致,所以很多時(shí)候,仍舊使用 ISO-8859-1編碼來(lái)表示。而且在很多協(xié)議上,默認(rèn)使用該編碼。
解決辦法
將代碼中三處的ISO-8859-1 改成UTF-8就好了。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>客戶列表-BootCRM</title>
</head>
<body>
<h1>解決中文亂碼</h1>
</body>
</html>
此時(shí)運(yùn)行結(jié)果就正常了
tml如何選擇編碼,常見(jiàn)utf-8和gb2312編碼如何判斷選擇!
一、首先了解目前國(guó)內(nèi)中文網(wǎng)頁(yè)常用編碼是utf-8 還是gb2313。
百度搜索 使用utf-8
騰訊新聞 使用utf-8
淘寶 使用utf-8
亞馬遜 使用utf-8
W3Cschool.cn 也使用utf-8
支付寶 使用utf-8
360搜索 使用utf-8
小米官網(wǎng) 使用utf-8
魅族官網(wǎng) 使用utf-8
可見(jiàn)截止2017年05月02日這些名站,均使用utf-8編碼。
二、了解常見(jiàn)html編碼utf-8和gb2312。
1、utf-8
UTF-8(8-bit Unicode Transformation Format)是一種針對(duì)Unicode的可變長(zhǎng)度字符編碼,又稱萬(wàn)國(guó)碼。由Ken Thompson于1992年創(chuàng)建。現(xiàn)在已經(jīng)標(biāo)準(zhǔn)化為RFC 3629。UTF-8用1到4個(gè)字節(jié)編碼UNICODE字符。用在網(wǎng)頁(yè)上可以同一頁(yè)面顯示中文簡(jiǎn)體繁體及其它語(yǔ)言(如日文,韓文)一般顯示簡(jiǎn)體中文字、繁體中文字、英文、日文、韓文均支持。
2、GB2312
GB2312即信息交換用漢字編碼字符集。《信息交換用漢字編碼字符集》是由中國(guó)國(guó)家標(biāo)準(zhǔn)總局1980年發(fā)布,1981年5月1日開(kāi)始實(shí)施的一套國(guó)家標(biāo)準(zhǔn),標(biāo)準(zhǔn)號(hào)是GB 2312—1980。GB2312編碼適用于漢字處理、漢字通信等系統(tǒng)之間的信息交換,通行于中國(guó)大陸;新加坡等地也采用此編碼。中國(guó)大陸幾乎所有的中文系統(tǒng)和國(guó)際化的軟件都支持GB 2312。一般簡(jiǎn)體中文的網(wǎng)站使用GB2312比較多。
3、W3Cschool小結(jié)
從文字支持上說(shuō)utf-8比GB2312要多。一般企業(yè)站看情況自己選擇網(wǎng)頁(yè)編碼。
三、如何選擇utf-8和gb2313編碼制作html
單獨(dú)做html如果你是先div css做HTML,可以不用考慮編碼問(wèn)題,及時(shí)制作好了HTML編碼要轉(zhuǎn)換也很簡(jiǎn)單,只需要通過(guò)DW等軟件即可完成html編碼轉(zhuǎn)換。
根據(jù)程序文件編碼定如果在開(kāi)發(fā)DIV CSS時(shí)就知道了程序文件時(shí)哪種編碼。這個(gè)時(shí)候就要根據(jù)開(kāi)發(fā)程序文件編碼確定編碼。如果程序文件和HTML編碼不同很容易照成Html亂碼(html中文亂碼)。如果不會(huì)程序開(kāi)發(fā)卻使用開(kāi)源程序比如dedecms 、帝國(guó)、phpcms 等網(wǎng)站系統(tǒng)時(shí),開(kāi)發(fā)HTML和使用開(kāi)源程序編碼也要保持一致。
總結(jié):
無(wú)論什么情況下開(kāi)發(fā)DIV CSS使用HTML編碼要根據(jù)程序確定,如果無(wú)法確定要使用程序編碼,這個(gè)時(shí)候選擇常用gbk和utf編碼兩種均可,如果在開(kāi)發(fā)HTML時(shí)知道程序文件使用什么HTML編碼,這個(gè)時(shí)候在開(kāi)發(fā)DIV CSS時(shí)候就要與程序文件使用編碼保持一致,避免網(wǎng)頁(yè)亂碼問(wèn)題。
所以建議最好用UTF-8,國(guó)際通用。GB2312是國(guó)內(nèi)用的,簡(jiǎn)體中文。
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。