Oracle
 sql >> Base de données >  >> RDS >> Oracle

Pourquoi puis-je utiliser un caractère qui ne fait pas partie d'un jeu de caractères (windows-1252) ?

Vous n'utilisez pas vraiment de caractères en dehors du jeu de caractères de la page et de la base de données.

Étant donné que la page est encodée en Windows-1252, si vous saisissez Alt+251 dans un champ de formulaire, puis publiez les données, le navigateur indique :

"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."

Et si vous remarquez, il s'agit de 7 caractères différents qui se trouvent dans le jeu de caractères Windows-1252.

Si la page avait été encodée avec un jeu de caractères multi-octets, le navigateur renverrait quelque chose qui est considéré comme 1 caractère.

Alors, comment pouvez-vous l'interroger ?

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

Ce que vous avez est le caractère html du symbole de la racine carrée :https://www .google.com/#q=html+character+codes

Mise à jour :

Voici un très bon article expliquant ce qui se passe :http://htmlpurifier.org/docs/ utilisateur final-utf8.html

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

De plus, lorsque vous entrez Alt + 251 sur une machine Windows, il insère le symbole de la racine carrée qui, en Unicode, est U-221A.

Appuyer sur Alt + 251 est comme une macro de clavier pour insérer Unicode c'est U-221A.