Символ "¿" (перевернутый знак вопроса) в оракуле

Я нашел "¿"символ (перевернутый знак вопроса) в таблицах базы данных вместо одинарных кавычек (') персонаж.

Может ли кто-нибудь дать мне знать, как я могу избежать этого персонажа из таблицы.

Есть много строк, которые содержат текст с этим символом, но не все одинарные кавычки обращаются к этому символу..

Я даже не могу отфильтровать строки, чтобы снова обновить этот символ (¿) одинарной кавычкой.

Когда мне нравится "%¿%", он фильтрует мне текст, содержащий обычный вопросительный знак (?)

2 ответа

В общем, есть две возможности:

  1. Ваши таблицы базы данных действительно имеют ¿ символы вызваны неправильно NLS_LANG настройки при вставке данных (или набор символов базы данных не поддерживает специальные символы). В таком случае LIKE '%¿%' условие должно работать. Однако это также означает, что у вас есть поврежденные данные в вашей базе данных, и почти невозможно исправить их, потому что¿ обозначает любой неправильный характер.
  2. Ваш клиент (например, SQL*Plus) не может отображать специальный символ, вызванный неправильным NLS_LANG Настройки или шрифт не поддерживает специальный символ.

Какой клиент вы используете (SQL*Plus, TOAD, SQL Developer и т. Д.)?

Какой твой NLS_LANG Переменная среды, соотв. ваш ключ реестра HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG или же HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG?

Что вы получаете, когда выбираете DUMP(... , 1016) с вашего стола?

Действительно ли это была простая цитата (ASCII 39)? Если они на самом деле были своего рода "умными цитатами", то у них есть сопоставления в windows-1252, но для них нет сопоставления ISO-8859, поэтому, если ваша кодировка базы данных - ISO-8859-1, и вы пытаетесь вставить некоторые окна - В тексте 1252 Oracle пытается выполнить преобразование из windows-1252 в ISO-8859-1 и использует chr(191) для обозначения не отображаемого символа. chr(191) - первый вопросительный знак.

Вы можете проверить это, выполнив это (скопируйте выбор, чтобы сохранить умные кавычки):

select dump('‘’“”') from dual

Это поведение в основном "правильное", поскольку то, что вы просите, чтобы Oracle сделал, не может быть сделано, хотя и не очень интуитивно понятно.

Для сравнения см. Кодировки windows-1252, ISO8859-1 и ISO-8859-15. Обратите внимание, что окна используют диапазон 127-159, который не используется в кодировках ISO

Другие вопросы по тегам