gpt4 book ai didi

javascript - UTF-8 编码 : Unescape(%e2%80%93) returns â instead of –

转载 作者:行者123 更新时间:2023-11-30 12:26:02 25 4
gpt4 key购买 nike

我有一个搜索页面,其中包含可以搜索的数据库名称下拉列表。选择数据库后,名称将用于查询字符串中以获取搜索结果。然后我有一个保存搜索的功能,它只是获取当前 URL 的查询字符串并将其保存到数据库中。但是,我的一个数据库名称导致了问题,因为连字符没有正确编码。

数据库的名称是“Barnstable, MA: Probate Records 1685–1789”。生成的查询字符串是

?database=Barnstable%2C%20MA%3A%20Probate%20Records%201685–1789

很好,查询字符串得到了我需要的结果。但是,当我使用“window.location.search”获取当前查询字符串时,连字符变成 UTF-8 编码“%e2%80%93”。这是我的保存功能:

function SaveSearch(query, url) {
var title = $("#save-name").val();
query = removeParam("page", query);
if (title) {
$.ajax({
url: url,
type: 'post',
success: function (info) {
console.log("INFO: ");
console.log(info);
if (info == "Success") {
// change icon
$('#name-search').hide();
$('#save-name').val('');
$("#search-saved").show();
} else {
$("#not-logged-in").show();
}
},
error: function (info) {
$("#error").show();
},
data: { queryParams: query, title: title }
});
}
}

当我调试它时,如果我在一开始就将鼠标悬停在“查询”上,它会显示为

database=Barnstable%2C%20MA%3A%20Probate%20Records%201685%e2%80%931789

即使我没有更改编码中的任何内容,并且页面顶部的 url 中有一个连字符。所以它最终在我的数据库中作为 %e2%80%93。

当我尝试加载此搜索时出现问题:

 $.ajax({
url: url,
type: 'get',
async: true,
dataType: 'json',
success: function (data) {
for (var i = 0; i < data.length; i++) {
var query = data[(data.length - (i + 1))].QueryParams;
var params = (data[(data.length - (i + 1))].QueryParams).split("&");
console.log(params);
var paramDisplay = "";
for (var j = 0; j < params.length; j++) {
var param = params[j].split("=");
var label = labelArray[param[0]];
if (label != undefined) {
var paramString = label + ": " + unescape(param[1]);
paramDisplay += paramString;
if (j < params.length - 1) {
paramDisplay += "<br />";
}
}
}..........

unescape(param[1]) 返回“Barnstable, MA: Probate Records 1685â1789”

然后,当我尝试进行此搜索时,它没有得到任何结果,因为名称中的字符有误。

最佳答案

注意它给你的东西。

具体来说,%e2 作为单个字符是 "â",而 %80%93不是 ISO-8859-1 字符集中定义的字符。

也就是说,您的 UTF-8 编码字符被处理为三个 ISO-8859-1 字符。

unescape 不是正确使用的函数。请改用 decodeURIComponent

关于javascript - UTF-8 编码 : Unescape(%e2%80%93) returns â instead of –,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29351869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com