无法通过jQuery ajax发送特殊字符

Jon*_*ark 6 javascript tags character-encoding

我正在开发一个网页,用户正在使用标签搜索文件.我正在使用jQuery Ajax来远程调用API(数据库).当我使用像az这样的非特殊字符但在使用例如åäö时失败时,一切正常.

在服务器端我使用PHP.我打印标签,看它是否"到达",所有az工作正常,但åäö根本没有显示.他们似乎没有"到达".

有什么不对?

这是我的jQuery代码:

var tags = $('#tags').val();

$.ajax ({
    type: "POST",
    url: base_url + "search", 
    data: "tags=" + tags + "&limit=" + limit, 
    beforeSend: function (html) {
            $("#search_results").html("Searching for files...");
    },
    success: function (html) {
            $("#search_results").html(html);
    },
    error: function (html) {
            $("#search_results").html('Something went wrong!');
    }
});
Run Code Online (Sandbox Code Playgroud)

这是我的服务器端代码:

echo ($_POST['tags']);
Run Code Online (Sandbox Code Playgroud)

我在这里搜索并查看了有关此问题的相关问题,但遗憾的是没有帮助我.

UPDATE

用这解决了!现在工作正常.

{tags: encodeURIComponent(tags), limit: limit}
Run Code Online (Sandbox Code Playgroud)

Vad*_*kin 11

在使用encodeURIComponent()将数据(标签)发送到服务器之前,必须对其进行编码

  • 确保您的流的所有部分都使用UTF-8检查:HTML页面; 请求编码; 服务器端编码; `AJAX.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset = UTF-8");``meta http-equiv ="content-type"content ="text/html; charset = UTF-8"`基本上你必须追踪丢失了哪一步字符编码. (2认同)