从JSON元素的内容构造URL以避免输出中出现编码字符的正确方法是什么?

What is the correct way to construct a URL from the content of a JSON element to avoid encoded characters in output?

本文关键字:编码字符 是什么 方法 输出 元素 JSON URL      更新时间:2023-09-26

我正在尝试将JSON消息的输出发送到Twitter,如下所示:

         $.getJSON(
          'http://quotesondesign.com/wp-json/posts?filter[orderby]=rand&filter[posts_per_page]=1&callback=',
          'json',
          function(data) {
            $("#quote-content").html(data[0].content + "<br> --" + data[0].title);
            tweetText = data[0].content.replace(/<'/?[^>]+>/gi, '');
            url = "https://twitter.com/intent/tweet?text=" + '"' + tweetText + '"';
            console.log(url);
            $('#tweet').attr("href", url);
        }
    );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

问题是,当数据中存在一个字符,如单引号(撇号)、破折号或双引号时,内容会像这样被截断: 原始字符串:

几乎所有的一切——所有的外在期望,所有的骄傲,所有的恐惧尴尬或失败——这些事情在你面前就会消失死亡,只留下真正重要的东西。

Tweet截断第一个未处理字符:

"几乎所有

截图在这里

========================================================================

为了纠正这个问题,我试着改变:

url = "https://twitter.com/intent/tweet?text=" + '"' + tweetText + '"';

url = "https://twitter.com/intent/tweet?text=" + '"' + encodeURIComponent(tweetText) + '"';

现在输出如下:

原始字符串:

创造的最好的事情是它开始自己生活生活。

Tweet文本现在完全显示,但显示编码字符:

截图在这里

对不起,我不得不发布一个截图,因为Stack Overflow实际上是正确转义字符!

我的问题是,当发送报价到Twitter时,我如何获得原始文本(所有字符)来显示?

谢谢你的帮助!

我这样做了:

var elem = document.createElement('textarea');
            elem.innerHTML = tweetText;
            tweetText = elem.value;

基本上,文本是作为API编码的HTML发送的,所以我必须在构建URL之前解码它。