首頁 後端開發 PHP問題 如何解決php request 亂碼問題

如何解決php request 亂碼問題

Oct 20, 2020 am 09:39 AM
request

php request亂碼的解決方法:先開啟tomcat的server.xml;然後設定元素的屬性「URIEncoding=「UTF-8」」即可。

如何解決php request 亂碼問題

推薦:《PHP影片教學

request、response 中文亂碼問題與解決方式

request亂碼指的是:瀏覽器向伺服器發送的請求參數中包含中文字符,伺服器取得到的請求參數的值是亂碼;

response亂碼指的是:伺服器傳送給瀏覽器的資料包含中文字符,瀏覽器中顯示的是亂碼;

 

亂碼產生的原因:不管是request亂碼還是response亂碼,其實都是因為客戶端(瀏覽器)跟伺服器端採用的編碼格式不一致所造成的。以request亂碼為例:瀏覽器向伺服器發送請求,因為瀏覽器與伺服器之間的通訊實質上是socket流,所以要先將請求參數(字元)轉換成字節,也就是編碼過程,伺服器接收到請求參數後進行解碼(位元組轉字元),然後封裝到request物件中。如果客戶端的編碼與伺服器端的解碼不統一,就會導致透過request取得到的請求參數的值是亂碼。

 

解決:

一、response亂碼

伺服器傳送給瀏覽器的資料預設是依照ISO-8859-1編碼,瀏覽器接收到資料後依照預設的字元集解碼後顯示,如果瀏覽器的預設解碼字元集不是ISO-8859-1,就出現亂碼。

    對於response亂碼,只需要在伺服器端指定一個編碼字元集,然後通知瀏覽器按照這個字元集進行解碼就可以了。有三種方式:

    1、A、設定伺服器端的編碼

response.setCharacterEncoding("utf-8”);

#預設是ISO-8859-1;該方法必須在response.getWriter()之前進行設定

B、通知瀏覽器伺服器發送的資料格式

         response.setHeader("contentType", "text/html; charset=utf- 8”);

    2、A、通知瀏覽器伺服器傳送的資料格式

response.setContentType("text/html;charset=utf-8”);

等同於response.setHeader("contentType", "text/html; charset=utf-8”);它其實會覆蓋response.setCharacterEncoding("utf-8”) ,在開發中只需要設

B、設定伺服器端的編碼

response.setContentType("text/html;charset=utf-8”);

    3、A、設定伺服器端的編碼

response.setCharacterEncoding("utf-8”);

B、瀏覽器使用utf-8進行解碼

         

總結:設定:

A 、設定伺服器端的編碼

response.setCharacterEncoding("utf-8”);

B、通知瀏覽器伺服器發送的資料格式

response.setContentType("text /html;charset=utf-8”);

C、瀏覽器使用utf-8進行解碼

         

#本人是這樣設定的,以防萬一;

二、request亂碼

從瀏覽器發起的存取方式有三種:在網址列直接輸入URL存取、點擊頁面中的超連結存取、提交表單存取。第一種存取方式瀏覽器預設將參數依照utf-8編碼,後面兩種存取方式瀏覽器將參數依照目前頁面的顯示編碼進行編碼。所以對於request亂碼,只需要在伺服器端設定對應的解碼格式即可。由於存取方式不同,瀏覽器對參數的編碼格式也不同,為了方便處理,透過超連結和表單的存取也規定必須是utf-8格式,即顯示目前頁面的編碼也要使用utf-8,這樣瀏覽器將統一使用utf-8對參數進行編碼。

A、post方式

post方式屬於表單提交,參數存在於請求體中。

request.setCharacterEncoding("utf-8”)

B、get方式

get方式提交的參數會跟在請求行中的uri後邊,伺服器依照默認的iso-8859-1進行解碼,這時候解決亂碼有兩種辦法:

辦法一:修改伺服器端對uri參數的預設編碼

在tomcat的server.xml中,設定元素的屬性URIEncoding="UTF-8”即可。 (預設沒有設定此屬性)

例如: 注意:1、設定元素的屬性useBodyEncodingForURI=“true”,意思是請求體和uri使用相同的編碼格式。設定這兩個屬性,可以解決get方式的亂碼,又可以解決     post方式的亂碼。 2.透過修改server.xml指定伺服器對get和post統一依照utf-8解碼,要求tomcat管理下的所有web應用程式都要使用utf-8編碼,也就是所有的jsp、html頁面都使用utf-8編碼。

以上是如何解決php request 亂碼問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

php request什麼意思 php request什麼意思 Jul 07, 2021 pm 01:49 PM

request的中文意思是“請求”,是php中的一個全域變量,是一個包含了“$_POST”、“$_GET”和“$_COOKIE”的數組。 「$_REQUEST」變數可以取得POST或GET方式提交的資料、COOKIE資訊。

Python 3.x 中如何使用urllib.request.urlopen()函數發送GET請求 Python 3.x 中如何使用urllib.request.urlopen()函數發送GET請求 Jul 30, 2023 am 11:28 AM

Python3.x中如何使用urllib.request.urlopen()函數發送GET請求在網路程式設計中,我們經常需要透過發送HTTP請求來取得遠端伺服器的資料。在Python中,我們可以使用urllib模組中的urllib.request.urlopen()函數來傳送HTTP請求,並取得伺服器回傳的回應。本文將介紹如何使用

PHP中的Request物件是什麼? PHP中的Request物件是什麼? Feb 27, 2024 pm 09:06 PM

PHP中的Request物件是用來處理客戶端傳送到伺服器的HTTP請求的物件。透過Request對象,我們可以取得客戶端的請求訊息,例如請求方法、請求頭資訊、請求參數等,從而實現對請求的處理和回應。在PHP中,可以使用$_REQUEST、$_GET、$_POST等全域變數來取得要求的信息,但是這些變數並不是對象,而是陣列。為了更靈活和方便地處理請求訊息,可

怎麼將Vue3 Axios攔截器封裝成request文件 怎麼將Vue3 Axios攔截器封裝成request文件 May 19, 2023 am 11:49 AM

1.建立一個名為request.js的新文件,並匯入Axios:importaxiosfrom'axios';2、建立一個名為request的函數,並將其匯出:這將建立一個名為request的函數,並將其設定為具有基本URL的新的Axios實例。若要在封裝的Axios實例中新增逾時設置,可以在建立Axios實例時傳遞timeout選項。 exportconstrequest=axios.create({baseURL:'https://example.

PHP中Request的作用及意義 PHP中Request的作用及意義 Feb 27, 2024 pm 12:54 PM

PHP中Request的作用及意義在PHP程式設計中,Request是指向Web伺服器發送請求的一種機制,它在Web開發中扮演至關重要的角色。 Request主要用於取得客戶端發送過來的數據,例如表單提交、GET或POST請求等,透過Request能夠取得到使用者輸入的數據,並對這些數據進行處理和回應。本文將介紹PHP中Request的作用及意義,並給予具體的程式碼示

PHP中的request是什麼 PHP中的request是什麼 Jun 01, 2023 am 10:12 AM

PHP中的request是指請求,它是PHP中的一個超全局變量,用於收集HTML表單提交的數據,以及URL中的參數, 可以同時獲取GET和POST請求的數據, 注意$_request是一個關聯數組,其中的鍵是表單欄位的名稱,值是表單欄位的值。使用$_request變數時,應始終對使用者輸入的資料進行驗證和過濾,以避免安全性問題。

Go中如何使用context實作請求參數校驗 Go中如何使用context實作請求參數校驗 Jul 22, 2023 am 08:23 AM

Go中如何使用context實作請求參數校驗引言:在後端開發過程中,我們經常需要對請求參數進行校驗,以確保參數的合法性。而Go語言提供了context包來處理請求的上下文訊息,其優雅的設計和簡單的使用方式使其成為常用的工具。本文將介紹如何使用Go的context套件來實現請求參數校驗,並給出對應的程式碼範例。 context包簡介在Go中,context包用於傳遞

Python 3.x 中如何使用urllib.request模組發送HTTP請求 Python 3.x 中如何使用urllib.request模組發送HTTP請求 Jul 30, 2023 am 11:21 AM

Python3.x中如何使用urllib.request模組發送HTTP請求在實際的開發過程中,我們經常需要發送HTTP請求與伺服器進行互動。 Python提供了urllib.request模組,它是Python標準函式庫中用於處理URL請求的模組之一。在本文中,我們將學習如何使用urllib.request模組發送HTTP請

See all articles