【问题标题】:Decode symbols encoded like %20, %D0%BA解码像 %20, %D0%BA 这样编码的符号
【发布时间】:2018-11-25 14:34:18
【问题描述】:

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

为了将信息保存在服务器上,我使用以下代码(示例):

// 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,我相信是最新版本)没有将这些十六进制值解码为普通文本。

是否有防止字符编码的解决方法、某种可以轻松将值解码为字符的方法,或者是否可以在浏览器/系统中解决此问题?


我还在学习基础知识,我的后端知识很糟糕,因此做出上述设计选择是因为“它们工作得足够好”。

【问题讨论】:

标签: html request


【解决方案1】:

这是使用"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}`);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 2017-10-28
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 2017-07-05
    相关资源
    最近更新 更多