sql >> Database >  >> RDS >> Oracle

Waarom kan ik een teken gebruiken dat geen deel uitmaakt van een tekenset (windows-1252)?

Je gebruikt niet echt tekens buiten de tekenset van de pagina en de database.

Omdat de pagina met windows-1252 is gecodeerd, zegt de browser als u Alt+251 in een formulierveld invoert en vervolgens de gegevens plaatst:

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

En als je het merkt, dit zijn 7 verschillende karakters die in de windows-1252 tekenset staan.

Als de pagina was gecodeerd met een multibyte-tekenset, zou de browser iets terugsturen dat als 1 teken wordt beschouwd.

Dus hoe kun je het opvragen?

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

Wat je hebt is het html-teken van het vierkantswortelsymbool:https://www .google.com/#q=html+karakter+codes

Bijwerken:

Hier is een heel goed artikel waarin wordt uitgelegd wat er gebeurt:http://htmlpurifier.org/docs/ eindgebruiker-utf8.html

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

Ook wanneer u Alt+251 invoert op een Windows-computer, wordt het vierkantswortelsymbool ingevoegd, wat in Unicode U-221A is.

Het indrukken van Alt+251 is net zoiets als een toetsenbordmacro om Unicode in te voegen, het is U-221A.




  1. MySQL LOAD DATA INFILE met komma als decimaal scheidingsteken

  2. Postgres:JSON-kolom uitvouwen in rijen

  3. Hoe verwijder ik duplicaten van listagg

  4. Is het mogelijk om kolomwaarden samen te voegen tot een string met behulp van CTE?