Oracle
 sql >> база данни >  >> RDS >> Oracle

Защо мога да използвам знак, който не е част от набор от знаци (windows-1252)?

В действителност не използвате символи извън набора от знаци на страницата и базата данни.

Тъй като страницата е Windows-1252 кодирана, ако въведете Alt+251 в поле на формуляр и след това публикувате данните, браузърът казва:

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

И ако забележите, това са 7 различни знака, които са в Windows-1252 charset.

Ако страницата беше кодирана с многобайтов набор от знаци, браузърът щеше да изпрати обратно нещо, което се счита за 1 знак.

И така, как можете да го направите?

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

Това, което имате, е html знакът на символа за квадратен корен:https://www .google.com/#q=html+кодове+знаци

Актуализация:

Ето една много добра статия, обясняваща какво се случва: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...."

Освен това, когато въведете Alt+251 на Windows машина, той вмъква символа за квадратен корен, който в Unicode е U-221A.

Натискането на Alt+251 е точно като макрос от клавиатурата за вмъкване на Unicode, това е U-221A.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLFiddle повреден ли е? Грешки за Oracle, SQL Server, ...?

  2. Продължителност на данните в глобална временна таблица?

  3. Защо получавате грешка ORA-00937

  4. Как да зададете ръчно низ за свързване на Oracle в DbContext

  5. Използване на четими от човека константи в заявки