Konwertuj znaki specjalne na HTML w JavaScript

121

Czy ktoś wie, jak przekonwertować znaki specjalne na HTMLin Javascript?

Przykład:

  • &(ampersand) staje się &amp.
  • "(podwójny cudzysłów) zmienia się na &quotkiedy ENT_NOQUOTESnie jest ustawione.
  • '(pojedynczy cudzysłów) staje się &#039tylko wtedy, gdy ENT_QUOTESjest ustawiony.
  • <(mniej niż) staje się &lt.
  • >(większe niż) staje się &gt.
Jin Yong
źródło
zobacz także: stackoverflow.com/questions/1354064
Chris,
Możesz skorzystać z tej biblioteki: npmjs.com/package/utf8
Camilo Ortegón

Odpowiedzi:

77

Potrzebujesz funkcji, która robi coś podobnego

return mystring.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;");

Ale biorąc pod uwagę twoje pragnienie innego traktowania pojedynczych / podwójnych cudzysłowów.

Steven
źródło
co robi slash g?
JohnnyBizzle
5
@JohnnyBizzle /gw wyrażeniu regularnym oznacza „globalny”. Mówiąc najprościej, wszystkie wystąpienia ciągu zostaną zastąpione. Bez /gtylko pierwszego meczu zostałby zastąpiony.
Kevin Gimbel
207

Moim zdaniem najlepszym sposobem jest użycie wbudowanej funkcji ucieczki HTML przeglądarki do obsługi wielu przypadków. Aby to zrobić, po prostu utwórz element w drzewie DOM i ustaw innerTextelement na swój łańcuch. Następnie pobierz innerHTMLelement. Przeglądarka zwróci ciąg zakodowany w formacie HTML.

function HtmlEncode(s)
{
  var el = document.createElement("div");
  el.innerText = el.textContent = s;
  s = el.innerHTML;
  return s;
}

Testowe uruchomienie:

alert(HtmlEncode('&;\'><"'));

Wynik:

&amp;;'&gt;&lt;"

Ta metoda ucieczki z HTML jest również używana przez bibliotekę Prototype JS, choć inaczej niż w uproszczonym przykładzie, który podałem.

Uwaga: nadal będziesz musiał samodzielnie zmieniać cudzysłowy (podwójne i pojedyncze). Możesz użyć dowolnej metody przedstawionej tutaj przez innych.

Cerebrus
źródło
3
zwróć uwagę, że delete eljest to błąd. perfectionkills.com/understanding-delete
gblazex
To nic nie daje, kiedy próbuję. Odzyskuję postacie bez zmian.
Moss,
1
Przepraszam, testowałem z dziwnymi znakami, a Chrome jest podstępny i nie pokazuje prawdziwego wyjścia HTML, ale Firebug to robi (w rzeczywistości pokazał encję html dla symbolu praw autorskich, gdy wygenerowane źródło go nie koduje). <>&Działa to dobrze, ale nie jest tak obszerne, jak rozwiązania Neotropic lub KooiInc.
Moss
20
z jQuery,output = $('<div>').text(input).html()
dragon
6
Obie metody nie konwertują „na” i „w”, więc nadal można go używać do ataków XSS.
Ktoś,
32

Ta funkcja ogólna koduje każdy znak niealfabetyczny do jego kodu HTML (numeryczny):

function HTMLEncode(str) {
    var i = str.length,
        aRet = [];

    while (i--) {
        var iC = str[i].charCodeAt();
        if (iC < 65 || iC > 127 || (iC>90 && iC<97)) {
            aRet[i] = '&#'+iC+';';
        } else {
            aRet[i] = str[i];
        }
    }
    return aRet.join('');
}
KooiInc
źródło
Brzmi to naprawdę sprytnie, ale mogę tylko przekonwertować podstawy:<>&
Moss
nvm. Działa w konsoli w porządku, ale kiedy wyprowadzasz do przeglądarki, wygląda na to, że nie dokonała konwersji. O co w tym chodzi?
Moss
@Moss: przeglądarka renderuje znaki htmlencoded na znaki, które reprezentują. Zaletą znaków zakodowanych w html jest to, że przeglądarka nie musi zgadywać co do tłumaczenia (np.) Znaków diakrytycznych i dlatego zawsze renderuje te znaki tak, jak powinny być renderowane.
KooiInc
Możesz rozważyć zmianę tego, aby usunąć dostęp podobny do tablicy ze str. IE7 i starsze wersje tego nie obsługują i możesz równie łatwo wywołać charCodeAt bezpośrednio ze str, używając i jako argumentu. var iC = str.charCodeAt(i)
Chase
Ten kod nie generuje poprawnej wartości jednostki HTML dla znaku ±, który powinien wynosić & # 177; ale wraca & # 65533; która jest nieznaną postacią .
Paul,
21

Z Mozilli ...

Należy pamiętać, że charCodeAt zawsze zwraca wartość mniejszą niż 65 536. Dzieje się tak, ponieważ wyższe punkty kodowe są reprezentowane przez parę (o niższej wartości) „zastępczych” pseudoznaków, które są używane do tworzenia rzeczywistego znaku. Z tego powodu, aby zbadać lub odtworzyć pełny znak dla poszczególnych znaków o wartości 65 536 i więcej, dla takich znaków konieczne jest pobranie nie tylko charCodeAt (i), ale także charCodeAt (i + 1) (tak jakby / odtwarzając ciąg z dwoma> literami).

Najlepszym rozwiązaniem

/**
 * (c) 2012 Steven Levithan <http://slevithan.com/>
 * MIT license
 */
if (!String.prototype.codePointAt) {
    String.prototype.codePointAt = function (pos) {
        pos = isNaN(pos) ? 0 : pos;
        var str = String(this),
            code = str.charCodeAt(pos),
            next = str.charCodeAt(pos + 1);
        // If a surrogate pair
        if (0xD800 <= code && code <= 0xDBFF && 0xDC00 <= next && next <= 0xDFFF) {
            return ((code - 0xD800) * 0x400) + (next - 0xDC00) + 0x10000;
        }
        return code;
    };
}

/**
 * Encodes special html characters
 * @param string
 * @return {*}
 */
function html_encode(string) {
    var ret_val = '';
    for (var i = 0; i < string.length; i++) { 
        if (string.codePointAt(i) > 127) {
            ret_val += '&#' + string.codePointAt(i) + ';';
        } else {
            ret_val += string.charAt(i);
        }
    }
    return ret_val;
}

Przykład użycia:

html_encode("✈");
user1949536
źródło
21

Utwórz funkcję, która używa ciągu replace

function convert(str)
{
  str = str.replace(/&/g, "&amp;");
  str = str.replace(/>/g, "&gt;");
  str = str.replace(/</g, "&lt;");
  str = str.replace(/"/g, "&quot;");
  str = str.replace(/'/g, "&#039;");
  return str;
}
Matt Hanson
źródło
Miałem problem z pojedynczymi cudzysłowami (') i podwójnymi cudzysłowami (") w mojej wartości wejściowej, która miała być wyświetlana w html. Skrypt pękał, jeśli użytkownik go dodał.
Dharam Mali
13

Dla tych, którzy chcą zdekodować kod znaku będący liczbą całkowitą, jak &#xxx;wewnątrz ciągu, użyj tej funkcji:

function decodeHtmlCharCodes(str) { 
  return str.replace(/(&#(\d+);)/g, function(match, capture, charCode) {
    return String.fromCharCode(charCode);
  });
}

// Will output "The show that gained int’l reputation’!"
console.log(decodeHtmlCharCodes('The show that gained int&#8217;l reputation&#8217;!'));

ES6

const decodeHtmlCharCodes = str => 
  str.replace(/(&#(\d+);)/g, (match, capture, charCode) => 
    String.fromCharCode(charCode));

// Will output "The show that gained int’l reputation’!"
console.log(decodeHtmlCharCodes('The show that gained int&#8217;l reputation&#8217;!'));

Christos Lytras
źródło
3
Powinna to być akceptowana odpowiedź, ponieważ to wszystko zdekoduje.
Quesofat
To jest odpowiedź, której szukałem. Dzięki.
Dzenis H.
8
function char_convert() {

    var chars = ["©","Û","®","ž","Ü","Ÿ","Ý","$","Þ","%","¡","ß","¢","à","£","á","À","¤","â","Á","¥","ã","Â","¦","ä","Ã","§","å","Ä","¨","æ","Å","©","ç","Æ","ª","è","Ç","«","é","È","¬","ê","É","­","ë","Ê","®","ì","Ë","¯","í","Ì","°","î","Í","±","ï","Î","²","ð","Ï","³","ñ","Ð","´","ò","Ñ","µ","ó","Õ","¶","ô","Ö","·","õ","Ø","¸","ö","Ù","¹","÷","Ú","º","ø","Û","»","ù","Ü","@","¼","ú","Ý","½","û","Þ","€","¾","ü","ß","¿","ý","à","‚","À","þ","á","ƒ","Á","ÿ","å","„","Â","æ","…","Ã","ç","†","Ä","è","‡","Å","é","ˆ","Æ","ê","‰","Ç","ë","Š","È","ì","‹","É","í","Œ","Ê","î","Ë","ï","Ž","Ì","ð","Í","ñ","Î","ò","‘","Ï","ó","’","Ð","ô","“","Ñ","õ","”","Ò","ö","•","Ó","ø","–","Ô","ù","—","Õ","ú","˜","Ö","û","™","×","ý","š","Ø","þ","›","Ù","ÿ","œ","Ú"]; 
    var codes = ["&copy;","&#219;","&reg;","&#158;","&#220;","&#159;","&#221;","&#36;","&#222;","&#37;","&#161;","&#223;","&#162;","&#224;","&#163;","&#225;","&Agrave;","&#164;","&#226;","&Aacute;","&#165;","&#227;","&Acirc;","&#166;","&#228;","&Atilde;","&#167;","&#229;","&Auml;","&#168;","&#230;","&Aring;","&#169;","&#231;","&AElig;","&#170;","&#232;","&Ccedil;","&#171;","&#233;","&Egrave;","&#172;","&#234;","&Eacute;","&#173;","&#235;","&Ecirc;","&#174;","&#236;","&Euml;","&#175;","&#237;","&Igrave;","&#176;","&#238;","&Iacute;","&#177;","&#239;","&Icirc;","&#178;","&#240;","&Iuml;","&#179;","&#241;","&ETH;","&#180;","&#242;","&Ntilde;","&#181;","&#243;","&Otilde;","&#182;","&#244;","&Ouml;","&#183;","&#245;","&Oslash;","&#184;","&#246;","&Ugrave;","&#185;","&#247;","&Uacute;","&#186;","&#248;","&Ucirc;","&#187;","&#249;","&Uuml;","&#64;","&#188;","&#250;","&Yacute;","&#189;","&#251;","&THORN;","&#128;","&#190;","&#252","&szlig;","&#191;","&#253;","&agrave;","&#130;","&#192;","&#254;","&aacute;","&#131;","&#193;","&#255;","&aring;","&#132;","&#194;","&aelig;","&#133;","&#195;","&ccedil;","&#134;","&#196;","&egrave;","&#135;","&#197;","&eacute;","&#136;","&#198;","&ecirc;","&#137;","&#199;","&euml;","&#138;","&#200;","&igrave;","&#139;","&#201;","&iacute;","&#140;","&#202;","&icirc;","&#203;","&iuml;","&#142;","&#204;","&eth;","&#205;","&ntilde;","&#206;","&ograve;","&#145;","&#207;","&oacute;","&#146;","&#208;","&ocirc;","&#147;","&#209;","&otilde;","&#148;","&#210;","&ouml;","&#149;","&#211;","&oslash;","&#150;","&#212;","&ugrave;","&#151;","&#213;","&uacute;","&#152;","&#214;","&ucirc;","&#153;","&#215;","&yacute;","&#154;","&#216;","&thorn;","&#155;","&#217;","&yuml;","&#156;","&#218;"];

    for(x=0; x<chars.length; x++){
        for (i=0; i<arguments.length; i++){
            arguments[i].value = arguments[i].value.replace(chars[x], codes[x]);
        }
    }
 }

char_convert(this);
Neotropic
źródło
1
To działa świetnie., Ale z jakiegoś powodu po zmieszaniu z niektórymi funkcjami JQuery, to nie działa. Czasami robi to do nawrócenia niektórych lub tylko kilku. Ale ogólnie działa świetnie. onBlur = "char_convert (this);"
Neotropic,
Uh, pojawia się błąd „Uncaught TypeError: Cannot call method 'replace' of undefined” w Chrome i „arguments [i] .value is undefined” w Firebug.
Moss,
umieszczanie wszystkich tych znaków specjalnych w takiej tablicy jest całkowicie bezcelowe. zobacz inne odpowiedzi.
Gavin
Najlepsze rozwiązanie dla mnie, jedyne, które konwertuje í na & iacute; na przykład.
Edhowler
Jak uzyskać te znaki z klawiatury? Wiem, że to głupie pytanie ... na przykład w OS X
PositiveGuy
7

Jak wspomniano, dragonnajczystszym sposobem na to jest jQuery:

function HtmlEncode(s) {
    return $('<div>').text(s).html();
}

function HtmlDecode(s) {
    return $('<div>').html(s).text();
}
Serj Sagan
źródło
Ciekawe, ale jeśli twój ciąg zawiera spację, to go nie zmieni. Lepszym sposobem jest użycie encodeURI (yourString);
Mike Gledhill
6
function ConvChar (str) {
  c = {'<': '& lt;', '>': '& gt;', '&': '& amp;', '"': '& quot;'," '":' & # 039; ',
       '#': '& # 035;' };
  return str.replace (/ [<&> '"#] / g, funkcja (y) {return c [s];});
}

alert (ConvChar ('<- "- & -" -> - <- \' - # - \ '->'));

Wynik:

& lt; - & quot; - & amp; - & quot; - & gt; - & lt; - & # 039; - & # 035; - & # 039; - & gt;

W tagu obszaru testowego:

<- "- & -" -> - <-'- # -'->

Jeśli zmienisz trochę znaków w długim kodzie ...

user262419
źródło
4

W PREtagu - iw większości innych tagów HTML - zwykły tekst dla pliku wsadowego, który używa wyjściowych znaków przekierowania (<i>), zepsuje HTML, ale oto moja wskazówka : wszystko idzie w TEXTAREAelemencie - nie zepsuje HTML, głównie dlatego, że znajdujemy się wewnątrz elementu sterującego umieszczonego w instancji i obsługiwanego przez system operacyjny, a zatem jego zawartość nie jest analizowana przez silnik HTML.

Na przykład załóżmy, że chcę podświetlić składnię mojego pliku wsadowego za pomocą javascript. Po prostu wklejam kod w obszar tekstowy, nie martwiąc się o znaki zastrzeżone HTML, i każę skryptowi przetwarzać innerHTMLwłaściwość obszaru tekstowego, który ocenia tekst z zastrzeżonymi znakami HTML zastępowanymi przez odpowiadające im encje ISO-8859-1.

Przeglądarki automatycznie zmieniają znaczenie znaków specjalnych podczas pobierania właściwości innerHTML(i outerHTML) elementu. Korzystanie z obszaru tekstowego (a kto wie, może wpisywania tekstu) po prostu oszczędza wykonanie konwersji (ręcznie lub za pomocą kodu).

Używam tej sztuczki do testowania mojego wyróżniacza składni, a kiedy kończę tworzenie i testowanie, po prostu ukrywam obszar tekstu.

hector-j-rivas
źródło
3

obejście:

var temp = $("div").text("<");
var afterEscape = temp.html(); // afterEscape == "&lt;"
keshin
źródło
2
var swapCodes   = new Array(8211, 8212, 8216, 8217, 8220, 8221, 8226, 8230, 8482, 169, 61558, 8226, 61607);
var swapStrings = new Array("--", "--", "'",  "'",  '"',  '"',  "*",  "...", "&trade;", "&copy;", "&bull;", "&bull;", "&bull;");

var TextCheck = {
    doCWBind:function(div){
        $(div).bind({
            bind:function(){
                TextCheck.cleanWord(div);
            },
            focus:function(){
                TextCheck.cleanWord(div);
            },
            paste:function(){
                TextCheck.cleanWord(div);
            }
        }); 
    },
    cleanWord:function(div){
        var output = $(div).val();
        for (i = 0; i < swapCodes.length; i++) {
            var swapper = new RegExp("\\u" + swapCodes[i].toString(16), "g");
            output = output.replace(swapper, swapStrings[i]);
        }
        $(div).val(output);
    }
}

Kolejny, którego teraz używamy, działa. Jeden powyżej, zamiast tego wywołuje skrypt i zwraca przekonwertowany kod. Dobry tylko na małych obszarach tekstowych (co oznacza, że ​​nie jest pełny w artykule / blogu itp.)


Powyżej. Działa na większości znaków.

var swapCodes   = new Array(8211, 8212, 8216, 8217, 8220, 8221, 8226, 8230, 8482, 61558, 8226, 61607,161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 338, 339, 352, 353, 376, 402);
var swapStrings = new Array("--", "--", "'",  "'",  '"',  '"',  "*",  "...", "&trade;", "&bull;", "&bull;", "&bull;", "&iexcl;", "&cent;", "&pound;", "&curren;", "&yen;", "&brvbar;", "&sect;", "&uml;", "&copy;", "&ordf;", "&laquo;", "&not;", "&shy;", "&reg;", "&macr;", "&deg;", "&plusmn;", "&sup2;", "&sup3;", "&acute;", "&micro;", "&para;", "&middot;", "&cedil;", "&sup1;", "&ordm;", "&raquo;", "&frac14;", "&frac12;", "&frac34;", "&iquest;", "&Agrave;", "&Aacute;", "&Acirc;", "&Atilde;", "&Auml;", "&Aring;", "&AElig;", "&Ccedil;", "&Egrave;", "&Eacute;", "&Ecirc;", "&Euml;", "&Igrave;", "&Iacute;", "&Icirc;", "&Iuml;", "&ETH;", "&Ntilde;", "&Ograve;", "&Oacute;", "&Ocirc;", "&Otilde;", "&Ouml;", "&times;", "&Oslash;", "&Ugrave;", "&Uacute;", "&Ucirc;", "&Uuml;", "&Yacute;", "&THORN;", "&szlig;", "&agrave;", "&aacute;", "&acirc;", "&atilde;", "&auml;", "&aring;", "&aelig;", "&ccedil;", "&egrave;", "&eacute;", "&ecirc;", "&euml;", "&igrave;", "&iacute;", "&icirc;", "&iuml;", "&eth;", "&ntilde;", "&ograve;", "&oacute;", "&ocirc;", "&otilde;", "&ouml;", "&divide;", "&oslash;", "&ugrave;", "&uacute;", "&ucirc;", "&uuml;", "&yacute;", "&thorn;", "&yuml;", "&#338;", "&#339;", "&#352;", "&#353;", "&#376;", "&#402;");

Tworzę plik javascript, który ma wiele funkcji, w tym powyższe. http://www.neotropicsolutions.com/JSChars.zip

Zawiera wszystkie potrzebne pliki. Dodałem jQuery 1.4.4. Po prostu dlatego, że widziałem problemy w innych wersjach, ale jeszcze ich nie wypróbowałem.

Requires: jQuery & jQuery Impromptu from: http://trentrichardson.com/Impromptu/index.php

1. Word Count
2. Character Conversion
3. Checks to ensure this is not passed: "notsomeverylongstringmissingspaces"
4. Checks to make sure ALL IS NOT ALL UPPERCASE.
5. Strip HTML

    // Word Counter
    $.getScript('js/characters.js',function(){
            $('#adtxt').bind("keyup click blur focus change paste",
                function(event){
                    TextCheck.wordCount(30, "#adtxt", "#adtxt_count", event);
            });
            $('#adtxt').blur(
                function(event){
                    TextCheck.check_length('#adtxt'); // unsures properly spaces-not one long word
                    TextCheck.doCWBind('#adtxt');// char conversion
            });

            TextCheck.wordCount(30, "#adtxt", "#adtxt_count", false);
        });

    //HTML
    <textarea name="adtxt" id="adtxt" rows="10" cols="70" class="wordCount"></textarea>
<div id="adtxt_count" class="clear"></div>

    // Just Character Conversions:
    TextCheck.doCWBind('#myfield');

    // Run through form fields in a form for case checking.
    // Alerts user when field is blur'd.
    var labels = new Array("Brief Description","Website URL","Contact Name","Website","Email","Linkback URL");
    var checking = new Array("descr","title","fname","website","email","linkback");
    TextCheck.check_it(checking,labels);

    // Extra security to check again, make sure form is not submitted
    var pass = TextCheck.validate(checking,labels);
    if(pass){
        //do form actions
    }


    //Strip HTML
    <textarea name="adtxt" id="adtxt" rows="10" cols="70" onblur="TextCheck.stripHTML(this);"></textarea>
Neotropic
źródło
2
 <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>html</title>  
      <script>
      $(function() {   
      document.getElementById('test').innerHTML = "&amp;";
      });

      </script>
    </head>
    <body>
    <div id="test"></div>
    </body>
    </html>

możesz po prostu przekonwertować znaki specjalne na html używając powyższego kodu.

sanman
źródło
2

Oto dobra biblioteka, którą uważam za bardzo przydatną w tym kontekście.

https://github.com/mathiasbynens/he

Według jego autora:

Obsługuje wszystkie znormalizowane nazwane odwołania do znaków zgodnie z HTML, obsługuje niejednoznaczne znaki ampersand i inne przypadki skrajne, tak jak przeglądarka, ma obszerny zestaw testów i - w przeciwieństwie do wielu innych rozwiązań JavaScript - doskonale radzi sobie z astralnymi symbolami Unicode

Dipesh KC
źródło
To narzędzie github.com/mathiasbynens/he dla matematyki jest bardzo dobre i ma również internetowy plac zabaw
Mohamed Hussain
1

Oto kilka metod, których używam bez Jquery:

Możesz zakodować każdy znak w swoim ciągu:

function encode(e){return e.replace(/[^]/g,function(e){return"&#"+e.charCodeAt(0)+";"})}

Lub po prostu kieruj reklamy na główne znaki bezpiecznego kodowania, o które należy się martwić (&, inebreaks, <,>, "i '), na przykład:

function encode(r){
return r.replace(/[\x26\x0A\<>'"]/g,function(r){return"&#"+r.charCodeAt(0)+";"})
}

test.value=encode('How to encode\nonly html tags &<>\'" nice & fast!');

/*************
* \x26 is &ampersand (it has to be first),
* \x0A is newline,
*************/
<textarea id=test rows="9" cols="55">www.WHAK.com</textarea>

Dave Brown
źródło
0
function escape (text)
{
  return text.replace(/[<>\&\"\']/g, function(c) {
    return '&#' + c.charCodeAt(0) + ';';
  });
}

alert(escape("<>&'\""));
Chris
źródło
0

To nie jest bezpośrednią odpowiedzią na twoje pytanie, ale jeśli używasz innerHTMLdo pisania tekstu w elemencie i napotkałeś problemy z kodowaniem, po prostu użyj textContent:

var s = "Foo 'bar' baz <qux>";

var element = document.getElementById('foo');
element.textContent = s;

// <div id="foo">Foo 'bar' baz <qux></div>
Simone
źródło
0

Do DOMParserkonwersji znaków specjalnych możemy użyć javascript .

const parser = new DOMParser();
const convertedValue = (parser.parseFromString("&#039 &amp &#039 &lt &gt", "application/xml").body.innerText;
Ankit Arya
źródło
0

Poniżej znajduje się prosta funkcja do kodowania znaków ucieczki XML w JS

Encoder.htmlEncode (unsafeText);

user1211004
źródło
0

Możesz to naprawić, zastępując funkcję .text () na .html (). to działa dla mnie.

user3040433
źródło
-1
<html>
<body>
<script type="text/javascript">
var str= "&\"'<>";
alert('B4 Change:\n' + str);
str= str.replace(/\&/g,'&amp;');
str= str.replace(/</g,'&lt;');
str= str.replace(/>/g,'&gt;');
str= str.replace(/\"/g,'&quot;');
str= str.replace(/\'/g,'&#039;');
alert('After change:\n' + str);
</script>
</body>
</html>      

użyj tego do przetestowania: http://www.w3schools.com/js/tryit.asp?filename=tryjs_text


źródło
-1

Tak, ale jeśli chcesz gdzieś wstawić wynikowy ciąg bez jego konwersji z powrotem, musisz to zrobić:

str.replace(/'/g,"&amp;amp;#39;"); // and so on
graham
źródło
-4

Użyj funkcji escape () javaScript , która umożliwia kodowanie ciągów.

na przykład,

escape("yourString");
Benaiah
źródło
1
Kodowanie w celu umieszczenia adresu URL nie dla HTML (a funkcja jest i tak przestarzała, ponieważ jest zepsuta dla Unicode).
Quentin,
-4
public static string HtmlEncode (string text)
{
    string result;
    using (StringWriter sw = new StringWriter())
    {
        var x = new HtmlTextWriter(sw);
        x.WriteEncodedText(text);
        result = sw.ToString();
    }
    return result;

}
Shahyad Sharghi
źródło
Czy to rozwiązanie zawiera nawet kod javascript? Bo dla mnie wygląda jak JAVA lub C #.
Pan TK
To nie jest JavaScript.
Diego Fortes