[英]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,"£") );
});
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.