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

Hvorfor kan jeg bruge et tegn, der ikke er en del af et tegnsæt (windows-1252)?

Du bruger ikke rigtig tegn uden for sidens og databasens tegnsæt.

Fordi siden er Windows-1252-kodet, hvis du indtaster Alt+251 i et formularfelt og derefter sender dataene, siger browseren:

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

Og hvis du bemærker, er dette 7 forskellige tegn, som er i windows-1252-tegnsættet.

Hvis siden var blevet kodet med et multibyte-tegnsæt, ville browseren sende noget tilbage, som betragtes som 1 tegn.

Så hvordan kan du forespørge på det?

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

Det, du har, er html-tegnet af kvadratrodssymbolet:https://www .google.com/#q=html+tegn+koder

Opdatering:

Her er en meget god artikel, der forklarer, hvad der sker: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...."

Også når du indtaster Alt+251 på en Windows-maskine, indsætter den kvadratrodssymbolet, som i Unicode er U-221A.

At trykke på Alt+251 er ligesom en tastaturmakro for at indsætte Unicode, det er U-221A.




  1. Hvordan vælger man poster fra dette forhold?

  2. Hvorfor får man fejlen ORA-00937

  3. Python Scrapy - udfyld start_urls fra mysql

  4. Hvordan modellerer du effektivt arv i en database?