簡體   English   中英

jQuery 用“£” UTF-8 替換“£”

[英]jQuery replace "£" with "£" UTF-8

我正在嘗試從上傳的文件中對字符串中的 HTML 特殊字符進行編碼。 它適用於除“£”符號之外的所有內容,老實說,我不知道為什么

我使用以下方法從元素獲取文本:

var outputText = $("#displayAreaHidden").html();

outputText = encodeText(outputText);

然后我嘗試使用特殊字符的大對象及其 HTML 代碼替換來查找和替換

function encodeText(text) {
    var encodeTable = {
        //Huge object here
    };


    $.each(encodeTable, function(key, value) {
        if(text.indexOf(key) > -1) {
            text = text.replace(key, value);
        }
    })

    return text;
}

在“£”符號的情況下,對象具有:

"£" : "£"

這不會被拾取,因此不會發生替換。 我已經嘗試過££ 在原始 HTML 文件和對象本身中都被傳遞,但它仍然沒有被拾取。

任何幫助是極大的贊賞。

編輯

只需更新我當前的代碼:

(HTML 是由上傳的 HTML 文件“制作”的)

JS

function processData() {
    var data = $.parseHTML(fr.result);

    $("#displayAreaHidden").html(data);

    var outputText = $("#displayAreaHidden").html();

    $("#displayArea").text(encodeText(outputText));

}

function encodeText(text) {
  var text = escape(text);
  var encodeTable = {
        "£" : "£"
    };

  $.each(encodeTable, function(key, value) {
      text = text.replace(escape(key), escape(value));
  })

  return unescape(text);
}

HTML

<textarea id="displayArea"></textarea>

<div id="displayAreaHidden"></div>

您可以獲取 html 的所有文本並使用此正則表達式:

var outputText = $("body");

outputText = encodeText(outputText);

function encodeText(text) {

      var text = $(text).children().each(function () {
          $(this).html( $(this).html().replace(/£/g,"&pound;") );
      });

    return text;
}

編碼“特殊”字符絕對不是解決這個問題的正確方法。 您應該正確地指定文檔編碼。

無論如何,英鎊符號出現問題的最可能原因是String.prototype.replace只會替換第一次出現,除非您使用全局標志:

'XX'.replace('X', 'O'); // => 'OX'
'XX'.replace(/X/g, 'O'); // => 'OO'

此外,為所有需要編碼的字符(例如外國字母、貨幣、數學符號、表情符號和花哨的標點符號)維護一個表格既不高效也不可靠。

這是一個將在基本多語言平面(包括井號,但不包括表情符號)內編碼字符的函數:

function encode(string) {
    return string.replace(/./g, function(char) {
        var code = char.charCodeAt(0);
        return code > 127 ? '&#' + code + ';' : char;
    });
}

它一次掃描一個字符(而不是多次通過),並用十進制 HTML 代碼替換非 ASCII 字符。

它不會轉義特殊的 HTML 字符,例如<& 如果這是您想要的,它們應該預先編碼。 要正確編碼完整的 Unicode 空間,您需要一個更復雜的函數來組合代理對。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM