我正在使用 btoa
将字符串编码为 Base64。但是,它似乎无法正常工作,无论出于何种原因,任何变音都会被删除。
我试图演示它,但在此页面上它有效:
var content = "This text contains umlauts (ÖÜÄ) they will be removed on my webpage, but not in this demo for whatever reason";
alert(content);
content = btoa(content);
alert(content);
content = atob(content);
alert(content);
但它在我的网页上不起作用:
这是参数content
的值:
PHA+VGhpcyB0ZXh0IGNvbnRhaW5zIHVtbGF1dHMgKMTc1ikuIExldHMgc2VlIGlmIHRoZXkgYXJlIGdldHRpbmcgcmVtb3ZlZC48L3A+
如果你解码这个base64编码的字符串here然后你会得到这样的结果:
This text contains umlauts (). Lets see if they are getting removed.
正如您所看到的,元音变音因某种原因而被删除。
这是我对字符串进行编码的代码片段,它用于将新闻条目发布到博客:
<小时/>编辑:下面的代码突然可以正常工作,没有任何变化。有关更多信息,请参阅下面的其他编辑。
<小时/>var content = $(".ql-editor").html();
$.ajax({
url: "ajax.php",
method: "POST",
data: {
action: "postNews",
autor: autor,
content: btoa(content),
date: date
},
success: function(response) {
if (response.indexOf("error") === -1) {
$("#statusBoxMessage").html("Ihr Eintrag wurde erfolgreich veröffentlicht.");
$("#statusBoxImage").attr("src", "gfx/page/checkmark.jpg");
showStatusBox("success");
} else {
$("#statusBoxMessage").html("Fehler! Der Eintrag konnte nicht erstellt werden! (" + response + ")");
$("#statusBoxImage").attr("src", "gfx/page/fail.jpg");
showStatusBox("fail");
}
},
error: function(response) {
$("#statusBoxMessage").html("Fehler! " + response);
showStatusBox("fail");
}
});
<小时/>
编辑:我还有一个几乎相同的脚本,我用它来编辑博客中的新闻条目,但它仍然不起作用并删除任何元音变音:
<小时/>$("#submitEditContent").click(function() {
var content = $("#editEditor").val();
var s = 0;
if (target == "pages/news.html" || target == "news.html") {
target = currentNewsFilename;
s = 1;
}
$.ajax({
url: "ajax.php",
method: "POST",
data: {
action: "postEdit",
content: btoa(content),
target: target
},
success: function(response) {
if (response == "success") {
if (s == 0) {
window.location.replace("index.php?page=" + target);
} else {
window.location.reload();
}
} else {
console.warn(response);
}
}
});
我希望有人能解释为什么第一个脚本突然停止删除变音符号以及为什么第二个脚本仍然删除变音符号。
我用最新的chrome浏览器测试了它。
最佳答案
let decoded = atob('PHA+VGhpcyB0ZXh0IGNvbnRhaW5zIHVtbGF1dHMgKMTc1ikuIExldHMgc2VlIGlmIHRoZXkgYXJlIGdldHRpbmcgcmVtb3ZlZC48L3A+')
console.log(decoded)
我认为您网页上的编码没有任何问题。
这在浏览器中工作得很好。 它可以在您引用的外部站点上运行,但您需要将编码设置为 ISO-8859-1 而不是 UTF-8。试一试。
关于javascript - 客户端或服务器正在删除变音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48611047/