最早的http協議中,並沒有附加的資料型別資訊,所有傳送的資料都被客戶程式解釋為超文字標記語言html 文件,而為了支援多**資料型別,http協議中就使用了附加在文件之前的mime資料型別資訊來標識資料型別。常用的mime型別由兩部分組成:前面是資料的大類別,例如聲音audio、圖象image等,後面定義具體的種類。由於mime型別與文件的字尾相關,因此伺服器使用文件的字尾來區分不同檔案的mime型別,伺服器中必須定義文件字尾和mime型別之間的對應關係。而客戶程式從伺服器上接收資料的時候,它只是從伺服器接受資料流,並不了解文件的名字,因此伺服器必須使用附加資訊來告訴客戶程式資料的mime型別。伺服器在傳送真正的資料之前,就要先傳送標誌資料的mime型別的資訊,這個資訊使用content-type關鍵字進行定義,例如對於html文件,伺服器將首先傳送以下兩行mime標識資訊,這個標識並不是真正的資料檔案的一部分。
content-type: text/html
首先,我們了解一下什麼是servletresponse:輔助 servlet 將響應傳送到客戶端的物件;
然後,我們輸入一下**在get方法中:
這句**的意思是:是傳送 mime 正文響應中的字元資料」你好」.
如果不加任何**,這個時候瀏覽器應該是」??」,原因是如果未指定 charset,則將預設使用 iso-8859-1。而iso-8859-1沒有對應的中文編碼,所以這個時候就無法顯示我們的中文字了。
可使用 #setcharacterencoding 和 #setcontenttype 顯式指定 mime 正文響應的 charset,或使用 #setlocale 方法隱式指定它。顯式指定優先於隱式指定。如果未指定 charset,則將使用 iso-8859-1。setcharacterencoding、setcontenttype 或 setlocale 方法必須在呼叫 getwriter 之前,並且必須在提交採用要使用的字元編碼的響應之前呼叫.
response.setcharacterencoding("utf-8");
response.setheader("content-type", "text/html");//不加可能會出錯
或者:
response.setcontenttype("text/html;charset=utf-8");
request.setcharacterencoding("utf-8");
servlet編碼,解決中文亂碼
1.servlet程式獲取表單提交的值 request.getparameter 如果提交方式為post,則設定request.setcharacterencoding utf 8 如果提交方式是get,可以修改tomcat的server配置檔案,新增uriencoding utf 8 如下所示 2...
jsp跳轉至servlet中的中文亂碼問題
輸入查詢條件沒有結果輸出,在後台列印輸出結果如下圖,原來是中文亂碼問題。解決中文亂碼 1 request.setcharacterencoding utf 8 傳值編碼 2 response.setcontenttype text html charset utf 8 設定傳輸編碼 3 string...
解決mssql for linux 中文亂碼問題
什麼叫一波未平一波又起,這就是,好不容易安裝完成了,在用的時候居然出現了亂碼,很是頭疼,但還是解決了這個蛋疼的問題,在windows中使用mssql這麼久,從來沒出現過中文亂碼的情況,具體原因是出現在sql server的安裝配置上,預設安裝時,系統預設的排序規則時拉丁文的排序規則,在安裝過程中從來...