Unicode文本转换为十进制 - Blogger

时间:2017-04-03 12:17:32

标签: javascript html blogger unicode-escapes

我正在尝试通过Blogger将一些马拉雅拉姆语文本分享到Facebook Feed对话框,但我遇到了一些问题。这是问题所在。我正在博客帖子的HTML部分直接使用提要对话框代码,因此,最终文本会被博主自动转换为Unicode十进制,而Facebook则以相同的不可读格式显示文本。

一个例子

function FBShareOp(){
 var name = 'ഇതൊരു ടെസ്റ്റ് പോസ്റ്റാണ്'
 var description = "ഇതൊരു ടെസ്റ്റ് പോസ്റ്റാണ്"
 var share_image  = 'IMAGE LINK ';
 var share_url  = 'URL'; 
 var share_capt = 'ഇതൊരു ടെസ്റ്റ് പോസ്റ്റാണ്';

所以在上面的代码中,我正在使用自定义的马拉雅拉姆语文本ഇതൊരു ടെസ്റ്റ് പോസ്റ്റാണ്,在帖子发布后,博客正在将该文本转换为ഇതൊരു ടെസ്റ്റ് പോസ്റ്റാണ്,而Facebook正在显示与此类似的文本。

那我怎么能让它运作起来呢?我不希望博主像那样格式化它。有没有办法发布没有这种格式的文本,以便Facebook可以正确显示它?提前谢谢。

1 个答案:

答案 0 :(得分:0)

这是因为Blogger使用的XML解析器会转义某些字符。阻止内容转义的一种方法是将其封闭在 -

<![CDATA[ 
 ... Your code ...
]]>

但是在帖子编辑器中,上面的方法不起作用。相反,您必须通过JavaScript函数解码实体(如following answer中所示)。您的代码将以下列方式更改 -

<script>

   var decodeEntities = (function() {
     // this prevents any overhead from creating the object each time
     var element = document.createElement('div');

     function decodeHTMLEntities(str) {
      if(str && typeof str === 'string') {
        // strip script/html tags
        str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '');
        str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');
        element.innerHTML = str;
        str = element.textContent;
        element.textContent = '';
       }

       return str;
    }

   return decodeHTMLEntities;
   })();

   function FBShareOp(){
   var name = decodeEntities('ഇതൊരു ടെസ്റ്റ് പോസ്റ്റാണ്');
   var description = decodeEntities("ഇതൊരു ടെസ്റ്റ് പോസ്റ്റാണ്");
   var share_image  = 'IMAGE LINK ';
   var share_url  = 'URL'; 
   var share_capt = decodeEntities('ഇതൊരു ടെസ്റ്റ് പോസ്റ്റാണ്');
   }

</script>