javascript - 客户端或服务器正在删除变音符号

标签 javascript php jquery base64 php-5.2

我正在使用 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);

但它在我的网页上不起作用:

enter image description here

这是参数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。试一试。 enter image description here

关于javascript - 客户端或服务器正在删除变音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48611047/

相关文章:

javascript - 如何链接 GCM chrome 推送通知和负载数据?

php - phpcurl 的 Soap Python 响应中的 NameError

javascript - 在网页顶部显示验证摘要时控件定位不正确

javascript - 在 jquery-mentions-input 中选择用户名后保留 "@"

javascript - 在经典 ASP 中在模态父窗口顶部使用模态弹出窗口

javascript - next() 不通知 subscribe()

javascript - 使用 moment.js 的二月日期无效

php - 使用 CakePHP 将数据保存到新表

php - MySQL 字段中的多个值

javascript - 使用 Dojo 禁用 DIV 中的所有小部件