Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Por que posso usar um caractere que não faz parte de um charset (windows-1252)?


Você não está realmente usando caracteres fora da página e do conjunto de caracteres do banco de dados.

Como a página é codificada em Windows-1252, se você inserir Alt+251 em um campo de formulário e postar os dados, o navegador informará:
"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 você notar, são 7 caracteres diferentes que estão no charset windows-1252.

Se a página tivesse sido codificada com um conjunto de caracteres multibyte, o navegador enviaria de volta algo que é considerado 1 caractere.

Então, como você pode consultá-lo?
 select * from tab where field like '%√%'

O que você tem é o caractere html do símbolo da raiz quadrada:https://www .google.com/#q=html+character+codes

Atualização:


Aqui está um artigo muito bom explicando o que está acontecendo: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...."

Além disso, quando você digita Alt+251 em uma máquina Windows, ele insere o símbolo de raiz quadrada que em Unicode é U-221A.

Pressionar Alt+251 é como uma macro de teclado para inserir Unicode, é U-221A.