Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Escapamento de unicode passou a falhar no Chrome 75 #8

Closed
juliomelo opened this issue Jun 11, 2019 · 1 comment
Closed

Escapamento de unicode passou a falhar no Chrome 75 #8

juliomelo opened this issue Jun 11, 2019 · 1 comment
Assignees
Labels
Milestone

Comments

@juliomelo
Copy link
Member

A função escaparXml utiliza expressão regular para substituir caracteres com código alto no XML, usando a flag "i" para casamento insensível à caixa.

/**
* Substitui caracteres de código alto por códigos unicode.
* Substitui entidades não suportadas no XML por códigos unicode.
*
* @param {String} xml XML original.
* @returns {String} XML escapado.
*/
function escaparXml(xml) {
return xml.replace(/[\u00A0-\u9999]/gim, function (i) {
return '&#' + i.charCodeAt(0) + ';'; // Converte em unicode escapado.
});
}

A partir do Chrome 75, a expressão regular passou a casar a letra "s" (código 115) com o caractere "ſ" (s longo, código 383, unicode 017F).

Veja que:

"\u017F" !== 's' && "\u017F".toUpperCase() === 'S' // true

Dessa forma, o editor de articulação passou a escapar toda letra "s" minúscula, inclusive

<Articulacao xmlns="http://www.lexml.gov.br/1.0">

que passou a ser escapado como

<Articulacao xmln&#x115;="http://www.lexml.gov.br/1.0">
@juliomelo juliomelo self-assigned this Jun 11, 2019
@juliomelo juliomelo added the bug label Jun 11, 2019
@juliomelo juliomelo added this to the v1.0.5 milestone Jun 11, 2019
@juliomelo
Copy link
Member Author

Trata-se de um bug no Chrome:
https://bugs.chromium.org/p/chromium/issues/detail?id=971636

Entretanto, não vejo necessidade para ter a flag "i" na expressão regular.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant