sql >> Base de Datos >  >> RDS >> Oracle

¿Por qué puedo usar un carácter que no forma parte de un juego de caracteres (Windows-1252)?

Realmente no estás usando caracteres fuera de la página y el conjunto de caracteres de la base de datos.

Debido a que la página está codificada en Windows 1252, si ingresa Alt+251 en un campo de formulario y luego publica los datos, el navegador dice:

"Hey this char is not apart of windows-1252 and I need to only send back data
 which is in windows-1252, so I will do the best I can and send back the 
 html character code of char √  -- oh well, I wish I could send back
 1 character, since I cannot I will send back 7."

Y si se da cuenta, se trata de 7 caracteres diferentes que se encuentran en el conjunto de caracteres de Windows-1252.

Si la página se hubiera codificado con un juego de caracteres multibyte, el navegador devolvería algo que se considera 1 carácter.

Entonces, ¿cómo puedes consultarlo?

 select * from tab where field like '%√%'

Lo que tienes es el carácter html del símbolo de la raíz cuadrada:https://www .google.com/#q=html+caracteres+códigos

Actualización:

Aquí hay un artículo muy bueno que explica lo que está sucediendo:http://htmlpurifier.org/docs/ usuario final-utf8.html

 "...once you start adding characters outside of your encoding... 
 [the browser might] replace the character with a character entity reference...."

Además, cuando ingresa Alt+251 en una máquina con Windows, inserta el símbolo de raíz cuadrada que en Unicode es U-221A.

Presionar Alt+251 es como una macro de teclado para insertar Unicode, es U-221A.