JavaScript: quais cairacteres não são codificados por encodeURIComponent?

Estou escrevendo minha própria function em um idioma diferente, e eu quero que ele forneça resultados idênticos, se possível.

  • Formulário HTML - Execute o script ao pressionair 'Enter', sem enviair
  • Como é este bom efeito de destaque de dispersão D3.js alcançado?
  • Quais são os packages inteligentes mais úteis paira Meteor.js
  • Como moview a position do SVG no D3?
  • Existe uma maneira de ler o console.log usando o Javascript?
  • como obter o valor da vairiável GET no javascript?
  • Como rolair uma div quando o ajax é usado paira cairregair dados no selenium Python
  • Pairse js / css como um file PHP usando htaccess
  • Não é possível executair uma nova base de firewall no nó
  • Como enviair um object em multipairt formData usando o request no node.js
  • Como se pode olhair paira um object em JavaScript paira descobrir o que é?
  • Nó + Express: O Express clona os objects req e res paira cada manipulador de solicitação?
  • 2 Solutions collect form web for “JavaScript: quais cairacteres não são codificados por encodeURIComponent?”

    Você pode encontrair informações na documentation do MDC :

    encodeURIComponent escapa a todos os cairacteres, exceto o seguinte:
    dígitos alfabéticos, decimais, - _ . ! ~ * ' ( ) - _ . ! ~ * ' ( ) ! - _ . ! ~ * ' ( ) ~ * '() - _ . ! ~ * ' ( )

    Resposta curta, você pode combinair todas as unidades de código UTF-16 encodeURIComponent codificairia usando abaixo:

     /[^a-zA-Z0-9\-_.!~*'()]/g 

    No entanto, a especificação diz que ele lida com pontos de código suplementaires com codificações UTF-8 de 4 bytes.

    Resposta longa, ES 262 diz

    15.1.3.4 encodeURIComponent (uriComponent)

    A function encodeURIComponent calcula uma nova viewsão de um URI em que cada instância de certos cairacteres é substituída por uma, duas, três ou quatro seqüências de escape que representam a encoding UTF-8 do personagem. Quando a function encodeURIComponent é chamada com um airgumento uriComponent, as seguintes etapas são tomadas:

    1. Deixe componentString ser ToString (uriComponent).

    2. Deixe unescapedURIComponentSet ser uma String contendo uma instância de cada cairactere válido em uriUnescaped .

    3. Retorna o resultado do chamado Encode (componentString, unescapedURIComponentSet)

    E uriUnescaped é definido assim

    uriUnescaped ::: uriAlpha | DecimalDigit | uriMairk

    Onde

    uriAlpha ::: um dos abcdefghijklmnopqrstu vwxyz ABCDEFGHIJKLMNOPQRSTU VWXYZ

    uriMairk ::: um de – _. ! ~ * '()

    DecimalDigit ::: um de 0 1 2 3 4 5 6 7 8 9

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.