亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如題,在ajax 向 servlet中傳遞參數時,出現中文亂碼(問號) ,請問該怎么解決?

如題,在ajax 向 servlet中傳遞參數時,出現中文亂碼(問號) ,請問該怎么解決?

慕尼黑8549860 2022-03-04 14:07:16
后臺:接受參數。System.out.print(request.getParameter("onebroadcast"));調試發現 接收到的 就是 亂碼(??)
查看完整描述

2 回答

?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

第一點要明確,ajax 發送的中文是以什么 編碼(GBK 或utf-8 或 iso-8859-1)發送給后臺servlet 的,
第二點,當后臺接受到 ajax發過來的請求時,你要設置 用什么編碼去解析 ajax發送過來的數據
request.setCharacterEncoding("???");
上2步弄明白了,就不會出現亂碼。

第一, ajax 發送字符的編碼是由這個網頁所決定的,這個網頁的字符編碼是 UTF-8,那么 ajax發送的字符就以 utf-8 發送到后臺(不過 form表單里面的有個屬性可以設置以什么字符編碼發送給后臺)。你在頁面知道是 UTF-8編碼(或者用 document.charset 獲取編碼),但是 后臺不知道,所以,在ajax中設置一個 charset屬性為 utf-8(xmlHttp.setRequestHeader("Context-Type", "Charset=UTF-8");),告訴后臺 發過來的是 utf-8編碼的字符,

第二,上面說到 http請求中 charset 屬性指明編碼為 utf-8,但是,服務器不會給你自動轉換,默認都是使用 iso-8859-1(誰叫服務器都是老外開發的,他們根本都沒想到這玩兒會流行全世界,會有各種各樣的字符編碼,不過提供了一個方法讓我們自己設置編碼也算高明的了),所以后臺頁面要你自己獲取這個值,然后 設置轉換編碼
request.setCharacterEncoding("UTF-8");

查看完整回答
反對 回復 2022-03-07
?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

有幾個方法吧,第一
在首選項里面把默認jsp頁面編碼格式改為UTF-8.具體設置方法可百度,參考我的<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>(其他格式的也行。個人愛UTF-8)
第二,
在servlet中加上這么一句話,response.setContentType("text/html");request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("utf-8");可能是這個問題的概率大。(注:會設置項目全部去過濾則不用這么麻煩一般這樣也行)。
第三
轉換全球通用格式。比如a=您好就可以轉換為a=\u60A8\u597D。把后面那個字母數字的東西放到哪里也不會亂碼。轉換軟件JDK目錄下有。不會可百度。詳細的就不說了。自己查查長知識吧。
以上三種方法基本可以解決全部亂碼問題。



查看完整回答
反對 回復 2022-03-07
  • 2 回答
  • 0 關注
  • 526 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號