解码编码为%20,%D0%BA的符号

时间:2018-11-25 14:34:19

标签: html request

我有一些网页,这些网页的内容是从数据库(一种新闻网站)中加载的。而且我有一个页面,该页面提供了用于添加文章和修改某些网页元素的界面,例如网站的页眉内容或页脚内容。

要在服务器上保存信息,请使用以下代码(示例):

// on button click (not form with type="submit") a function is called which retrieves HTML form values separately and sends them to the function below

function sendRequest(HEADER, FOOTER) {
    let xhttp = new XMLHttpRequest();
    xhttp.open("GET", `/server.js?header=${HEADER}&footer=${FOOTER}`);
    xhttp.send();
}

HEADERFOOTER是一些字符串。问题在于,所有空格" "和所有西里尔字母也都以十六进制形式进行编码,例如"%20""%D0%BA"(这是一个示例,idk是它对应的字符)。因此,保存在数据库中并从数据库中检索的文本看起来像是一团糟,而我的浏览器(我相信是Google Chrome,我认为是最新版本)不会将这些十六进制值解码为普通文本。

是否存在一种防止字符编码的解决方法,可以通过某种方式轻松地将值解码为字符,还是可以在浏览器/系统中修复此问题?


我仍在学习基础知识,而我对后端的了解却很糟糕,因此做出上述设计选择是因为“它们的性能足够好”。

1 个答案:

答案 0 :(得分:0)

这是使用"GET"方法的问题。使用"POST",我可以正确地发送数据而不进行编码:

function sendRequest(HEADER, FOOTER) {
    let xhttp = new XMLHttpRequest();
    xhttp.open("POST", `server.js`);
    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhttp.send(`header=${HEADER}&footer=${FOOTER}`);
}