validation - populares - hashtags en linkedin 2018
El símbolo no se muestra correctamente (5)
El símbolo es: ؤ
¿Qué tiene de especial este símbolo y de dónde vino?
¿Qué se puede hacer para validar contra dicha entrada? O mejor aún, ¿cómo pueden mostrarse tales símbolos correctamente (es decir, no dejar que se superpongan con otros elementos)?
Acabo de copiar el símbolo a SQL Server y Visual Studio y encontré que el símbolo se convirtió a
Parece una combinación de símbolo ْ
que parece un símbolo árabe ) que el navegador no puede reconocer.
El símbolo es el símbolo árabe Hamza .
También el mismo símbolo es interpretado correctamente por IE.
Parece que algunos navegadores no pueden reconocer el símbolo.
EDITAR:
Para validar dicha entrada usualmente puede usar algún tipo de validación ( como restirct user para ingresar solo caracteres ASCII ) usando lenguajes como Javascript o PHP a través de los cuales puede restringir al usuario para ingresar los caracteres según su elección.
O mejor aún, ¿cómo pueden mostrarse tales símbolos correctamente?
Si el navegador no puede representar el símbolo como el que ha mostrado, entonces puede poner un límite en esos caracteres, como colocarlos dentro de un div con overflow:auto
pero esa no sería una buena solución. Una mejor sería usar un script de validación.
Bueno, ya que parece no ser tan trivial como pensé para otros, esta es mi respuesta.
Esto se llama Combinar Marcas Diacríticas .
Para darle un ejemplo, puede escribir un ä
directamente o como ä
que resulta en "ä".
Ahora puede estropear los signos como aquí: "ä̈̈̈̈̈̈", aquí entré: ä̈̈̈̈̈̈
Para protegerse de estos ataques "unicode", puede limitar el recuento de caracteres Unicode que pueden aparecer uno después del otro. No puedo darle un ejemplo exacto ya que las etiquetas no dan una pista sobre el idioma del lado del servidor. Si tienes un sitio web sencillo en inglés, intenta limitarlo a los caracteres ascii solamente. Sin embargo, no lo recomendaría, ya que no me permitirían firmar con mi nombre :-)
Solo limitaría el recuento de caracteres Unicode uno después del otro. Eso podría haberse hecho con expresiones regulares.
Si solo quiere evitar que los caracteres Unicode "salgan" de su contenedor, intente usar style="overflow:auto"
que parece limitar la forma en que se representa.
Es extraño que en la pantalla solo verás 1 carácter seguido de una línea dibujada de la nada.
Pero cuando se inspecciona con Chrome, ¡en realidad son los personajes con el primer carácter que tiene Unicode 1572
, seguidos por los 161 caracteres que dibujan la línea que tiene Unicode 1618
! Y después de eso hay Unicode (or ASCII code) 32
para espacio.
No estoy seguro si analizar sus símbolos en Javascript será útil, pero aquí hay un script que hace eso:
var text = ''your symbol goes here'',
regex1 = /(?:[/u0624|/u0652])/g,
result;
// note that the symbol comprises of the letter and the repeated diacritics;
// to remove the symbol completely:
result = text.replace( regex1, '''');
Aquí hay una manera de ver qué tipo de caracteres están incluidos en el símbolo y cómo estos caracteres lo hicieron parecer muy raro (está usando javascript regex):
https://regex101.com/r/yW4aM8/3
Puede usar meta tag: charset=UTF-8
para representar el símbolo completo correctamente en todos los navegadores, en lugar de intentarlo solo en IE. Diría que la única razón por la que su símbolo se ve raro es porque los diacríticos (los caracteres repetidos) no se usan correctamente, de lo contrario, los caracteres incluidos son todos legítimos. Realmente no me sorprendería si este símbolo es solo alguien que trata de hacer un mal uso de un formulario de entrada o algo para el mismo efecto.
El símbolo está usando caracteres árabes puros, y solo para que sepas que el rango de los caracteres de este idioma en el Unicode es el siguiente (javascript regex) y disponible en unicode.org :
/[/u0600-/u06FF]/g
/[/u0600-/u06FF]/g.exec( ‘text here’ );
// it''s advised that you wrap the Arabic words in spans to control and show them correctly, do the following:
''text includes arabic words''.replace(/(?:([/u0600-/u06FF]+))/g, ''<span class="xyz">$1</span>'';
y el CSS sería:
.xyz { unicode-bidi: bidi-override; }
Espero que eso ayude un poco. buena suerte.
$ echo -n ؤْْ | recode utf8..dump
UCS2 Nem Descripción
0624 wH arabic letter waw with hamza above
0652 0+ arabic sukun
0652 0+ arabic sukun
0652 0+ arabic sukun
[...lots of repeated lines...]
0652 0+ arabic sukun
Esa es la waw árabe (w) con muchos diacríticos: 1 hamza (precompuesto como el personaje waw con hamza arriba) y aproximadamente 160 signos diacríticos sukun repetidos.