Alguém sabe como converter caracteres especiais HTML
em Javascript
?
Exemplo:
&
(e comercial) torna-se&
."
(aspas duplas) torna-se"
quandoENT_NOQUOTES
não está definido.'
(aspas simples) torna-se'
apenas quandoENT_QUOTES
é definido.<
(menos que) se torna<
.>
(maior que) se torna>
.
javascript
Jin Yong
fonte
fonte
Respostas:
Você precisa de uma função que faça algo como
Mas levando em consideração seu desejo de tratamento diferente de aspas simples / duplas.
fonte
/g
em uma expressão regular significa "global". Simplificando, todas as ocorrências da string serão substituídas. Sem/g
apenas a primeira partida seria substituída.A melhor maneira, em minha opinião, é usar a funcionalidade de escape HTML embutida do navegador para lidar com muitos dos casos. Para fazer isso, basta criar um elemento na árvore DOM e definir o
innerText
do elemento para sua string. Em seguida, recupere oinnerHTML
do elemento. O navegador retornará uma string codificada em HTML.Execução de teste:
Resultado:
Este método de escape de HTML também é usado pela biblioteca Prototype JS, embora seja diferente do exemplo simplista que forneci.
Observação: você ainda precisará escapar aspas (duplas e simples). Você pode usar qualquer um dos métodos descritos por outros aqui.
fonte
delete el
é um erro aqui. perfectionkills.com/understanding-delete<>&
mas não é tão abrangente quanto as soluções da Neotropic ou KooiInc.output = $('<div>').text(input).html()
Esta função genérica codifica cada caractere não alfabético em seu código html (numérico):
fonte
<>&
var iC = str.charCodeAt(i)
Da Mozilla ...
A melhor solução
Exemplo de uso:
fonte
Crie uma função que use string
replace
fonte
Para aqueles que desejam decodificar um código de caractere inteiro como
&#xxx;
dentro de uma string, use esta função:ES6
fonte
fonte
Como foi mencionado,
dragon
a maneira mais limpa de fazer isso é comjQuery
:fonte
Resultado:
In testarea tag:
Se você apenas mudar alguns caracteres no código longo ...
fonte
Em uma
PRE
tag - e na maioria das outras tags HTML - texto simples para um arquivo em lote que usa os caracteres de redirecionamento de saída (<e>) quebrará o HTML, mas aqui está minha dica : vale tudo em umTEXTAREA
elemento - não quebrará o HTML, principalmente porque estamos dentro de um controle instanciado e manipulado pelo SO, e portanto seu conteúdo não está sendo analisado pelo motor HTML.Como exemplo, digamos que eu queira destacar a sintaxe do meu arquivo em lote usando javascript. Simplesmente colo o código em uma textarea sem me preocupar com os caracteres reservados do HTML, e faço o script processar a
innerHTML
propriedade da textarea, que avalia o texto com os caracteres reservados do HTML substituídos por suas entidades ISO-8859-1 correspondentes.Os navegadores escaparão de caracteres especiais automaticamente quando você recuperar a propriedade
innerHTML
(eouterHTML
) de um elemento. Usar uma textarea (e quem sabe, talvez uma entrada do tipo text) apenas evita que você faça a conversão (manualmente ou por meio de código).Eu uso esse truque para testar meu realce de sintaxe e, quando termino a criação e o teste, simplesmente oculto a área de texto da visualização.
fonte
Se você precisar de suporte para todas as referências de caracteres nomeados padronizados , unicode e e comercial ambíguos , a biblioteca he é a única solução 100% confiável que conheço!
Exemplo de uso
fonte
uma solução alternativa:
fonte
Outro que usamos agora que funciona. Um acima, chamei um script em vez disso e retorna o código convertido. Só é bom em áreas de texto pequenas (o que significa que não é um artigo completo / ect de blog ...)
Para cima. Funciona na maioria dos chars.
Eu crio um arquivo javascript que tem muitas funcionalidades, incluindo as acima. http://www.neotropicsolutions.com/JSChars.zip
Todos os arquivos necessários estão incluídos. Eu adicionei o jQuery 1.4.4. Simplesmente porque vi problemas em outras versões, ainda não as experimentei.
fonte
você pode simplesmente converter caracteres especiais em html usando o código acima.
fonte
Aqui está uma boa biblioteca que achei muito útil neste contexto.
https://github.com/mathiasbynens/he
Segundo seu autor:
fonte
Aqui estão alguns métodos que uso sem a necessidade de Jquery:
Você pode codificar cada caractere em sua string:
Ou apenas direcione os principais caracteres de codificação segura para se preocupar (&, inebreaks, <,>, "e ') como:
fonte
fonte
Isso não responde diretamente à sua pergunta, mas se você estiver usando
innerHTML
para escrever texto dentro de um elemento e tiver problemas de codificação, apenas usetextContent
, ou seja:fonte
Podemos usar javascript
DOMParser
para conversão de caracteres especiais.fonte
A seguir está a função simples para codificar caracteres de escape xml em JS
Encoder.htmlEncode (unsafeText);
fonte
Você pode corrigi-lo substituindo a função .text () por .html (). está funcionando para mim.
fonte
use isso para testar: http://www.w3schools.com/js/tryit.asp?filename=tryjs_text
fonte
Sim, mas se você precisar inserir a string resultante em algum lugar sem que seja convertida de volta, você precisa fazer:
fonte
Consulte JavaScript htmlentities http://phpjs.org/functions/htmlentities:425
fonte
Use a função javaScript escape () , que permite codificar strings.
por exemplo,
fonte
fonte