Oracle
 sql >> Database >  >> RDS >> Oracle

Perché posso usare un carattere che non fa parte di un set di caratteri (Windows-1252)?

In realtà non stai utilizzando caratteri al di fuori della pagina e del set di caratteri del database.

Poiché la pagina è codificata Windows-1252, se inserisci Alt+251 in un campo modulo e quindi pubblichi i dati, il browser 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."

E se noti, si tratta di 7 caratteri diversi che si trovano nel set di caratteri di Windows-1252.

Se la pagina fosse stata codificata con un set di caratteri multibyte, il browser invierebbe qualcosa che è considerato 1 carattere.

Allora come puoi interrogarlo?

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

Quello che hai è il carattere html del simbolo della radice quadrata:https://www. .google.com/#q=html+codici+carattere

Aggiornamento:

Ecco un ottimo articolo che spiega cosa sta succedendo:http://htmlpurifier.org/docs/ enduser-utf8.html

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

Inoltre quando inserisci Alt+251 su un computer Windows, inserisce il simbolo della radice quadrata che in Unicode è U-221A.

Premendo Alt+251 è proprio come una macro da tastiera per inserire Unicode è U-221A.