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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

web中常见乱码问题详解

發(fā)布時(shí)間:2025/3/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 web中常见乱码问题详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

基本講解

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

2、web tomcat:默認(rèn)是ISO8859-1,不支持中文的

3.java.nio.charset.Charset.defaultCharset()?獲得平臺(tái)默認(rèn)字符編碼;

4.getBytes() 是通過平臺(tái)默認(rèn)字符集進(jìn)行編碼;

?

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中設(shè)置字符編碼,則無此方法,因?yàn)镕ilter的doFilter方法的參數(shù)類型是ServletResponse)

兩句都填上,后來終于解決了這個(gè)問題;

其實(shí)我們應(yīng)該思考一下本質(zhì):

?

response.setContentType("text/html;charset=UTF-8");?目的是為了控制瀏覽器的行為,即控制瀏覽器用UTF-8進(jìn)行解碼;

response.setCharacterEncoding("UTF-8");目的是用于response.getWriter()輸出的字符流的亂碼問題。如果是response.getOutputStream()是不需要此種解決方案的,因?yàn)檫@句話的意思是為了將response對(duì)象中的數(shù)據(jù)以UTF-8解碼后的字節(jié)流發(fā)向?yàn)g覽器;

Servlet相關(guān)的幾種亂碼******************

1、瀏覽器調(diào)用jsp,html等頁面中文顯示亂碼

此情況需滿足兩個(gè)要求:

(1)文件本身是以u(píng)tf-8編輯保存的(myEclipse中在properties中鼠標(biāo)右鍵選擇utf-8)

(2)瀏覽器用utf-8解析:

(手動(dòng))==> 在瀏覽器中右鍵選擇編碼格式為utf-8

(智能)==> 在文件中寫入如:?<meta name="content-type" content="text/html; charset=UTF-8"> ?通過<meta>標(biāo)簽?zāi)Mresponse頭,起到告訴瀏覽器用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"?>

?

request亂碼問題*******************

request請(qǐng)求分為post和get,對(duì)于不同的請(qǐng)求方式有不同的解決亂碼的方案; ==>POST請(qǐng)求:

==>GET請(qǐng)求(URI方式傳遞參數(shù)亂碼):

出現(xiàn)情況:瀏覽器訪問<a href=""><form method="get">

如:<a href="/webproject/display.jsp?username=張三&password=123">顯示用戶名和密碼</a>

解決方法:問題本質(zhì)是get方式傳遞的參數(shù)內(nèi)容默認(rèn)編碼方式問ISO8859-1,而且使用request.setCharacterEncoding("utf-8")也無法解決問題。

法一:要解決這個(gè)問題,修改tomcat服務(wù)器的配置文件。修改tomcat目錄下的conf/server.xml文件的第43行:

修改前內(nèi)容:

<Connector port="8080" protocol="HTTP/1.1"

???? maxThreads="150"?? connectionTimeout="200000"

???? redirecPort="8443"/>

修改后內(nèi)容:

?

<Connector port="8080" protocol="HTTP/1.1"

???? maxThreads="150"?? connectionTimeout="200000"

???? redirecPort="8443"??? URIEncoding="utf-8"/>

法二:String usernameString = new String(username.getBytes("ISO-8859-1"),"UTF-8");?

JSP相關(guān)亂碼解決覺案**************************

問題描述:通過jsp,html,或servlet中的表單元素把參數(shù)提交給對(duì)應(yīng)的jsp或者servlet時(shí),在接收的jsp或servlet中接收到的參數(shù)中文顯示亂碼。

例如:

提交jsp代碼如下:

<%@ page language="java" pageEncoding="utf-8"%>

<html>

<head>

<title>輸入表單</title>

</head>

<body>

<form id="inputForm" name="inputForm" method="post" action="display.jsp">

????? 用戶名:<input type="text" name="username"/><br/>

????? 密?? 碼? :<input type="password" name="password"/><br/>

???? <input type="submit" name="submit" value="提交"/>

</form>

</body>

</html>

?

接收參數(shù)的jsp代碼如下:

<% @? page language="java" pageEncoding="utf-8"%>

<html>

<head>

<tilte>接收表單</title>

</head>

<body>

?????<% 在這里插入

?????????? request.setCharacterEncoding("utf-8");

????? %>

? ? ?? 用戶名:<%=request.getParameter("username")%><br/>

????? 密???? 碼:<%=request.getParameter("password")%><br/>

</body>

</html>

解決方法:在接收post提交的參數(shù)前,使用request.setCharacterEncoding("utf-8")設(shè)定接收參數(shù)的內(nèi)容格式為utf-8編碼。見接收表單中的插入內(nèi)容即可。當(dāng)然這種亂碼問題最好使用中文過濾器的方法最好。

?

web引入js文件出現(xiàn)亂碼的解決方式:******************

在web開發(fā)中我們一般都會(huì)不可避免的使用js。我們可以將js代碼直接放在頁面中即通過內(nèi)部使用js。但是為了給頁面良好的"瘦身"我們一般都會(huì)將js代碼放在外部,然后通過src引用。這個(gè)時(shí)候我們就需要注意一個(gè)問題:編碼問題。如果web頁面也js采用不同編碼,這個(gè)時(shí)候就會(huì)出現(xiàn)亂碼。(內(nèi)部使用js不需要注意編碼問題,因?yàn)樗麄儾捎玫氖峭环N編碼)?

解決方式1:

<script type=”text/javascript” src=”test.js” charset=”utf-8″></script>?

解決方式2:

<script type=”text/javascript” src=”test.js” charset=”gb2312″></script>?

轉(zhuǎn)載于:https://www.cnblogs.com/xiaobaizhang/p/8016691.html

總結(jié)

以上是生活随笔為你收集整理的web中常见乱码问题详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。