Мне нужно вставить значение в таблицу Oracle 'RR® 5
'?Как хранить ® в таблице оракула?
Я создал столбец таблицы varchar2
тип данных. Но когда я показываю данные, которые он показывает: 'RR?? 5
'
Любая идея, пожалуйста.
Мне нужно вставить значение в таблицу Oracle 'RR® 5
'?Как хранить ® в таблице оракула?
Я создал столбец таблицы varchar2
тип данных. Но когда я показываю данные, которые он показывает: 'RR?? 5
'
Любая идея, пожалуйста.
Прежде всего, вам нужно проверить, работает ли ваша база данных в кодировке символов, которая поддерживает специальные символы.
Выполнение этого запроса для проверки.
SELECT *
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
наборы символов, как AL32UTF8
, UTF8
, WE8ISO8859P1
способны хранить специальные символы ®
. Для того, чтобы проверить, будут ли ваши персонажи поддерживаются вы можете запустить эту команду
SELECT
ASCIISTR(CAST(UNISTR('\00C2') AS VARCHAR2(4))) AS VARCHAR_SUPPORT,
ASCIISTR(CAST(UNISTR('\00C2') AS NVARCHAR2(4))) AS NVARCHAR_SUPPORT
FROM dual;
VARCHAR_SUPPORT NVARCHAR_SUPPORT
---------------- ------------------------
\00C2 \00C2
1 row selected.
Если значение результата (00C2
) равна вашей входной величины, то ваши символы поддерживаются.
Предположим, ваша база данных поддерживает символы (в противном случае игра заканчивается здесь)
Решение 1
Выполнить эту команду из любого редактора SQL или SQL * плюс
INSERT INTO THE_TABLE VALUES (UNISTR('RR\00C2\00AE 5'));
В зависимости от ваши фактические требования - это очень утомительная работа.
Решение 2
Использование SQL * Plus команду. Для этого необходимо установить NLS_LANG
переменные среды в соответствии с кодовой страницей cmd
C:\>chcp
Active code page: 850
C:\>set NLS_LANG=.WE8PC850
C:\>sqlplus user/[email protected]
SQL> INSERT INTO THE_TABLE VALUES ('®');
Когда вы работаете на Linux/Unix chcp
эквивалента locale charmap
или echo $LANG
. Вы также можете изменить текущую кодовую страницу, например. chcp 65001
для UTF-8
Решения 3a
Создать SQL скрипт, содержащий ту же команду INSERT, как описано выше, и сохраните его с локальной кодировкой (обычно Windows CP1252
, много раз называют по старинке ANSI
)
c:\>set NLS_LANG=.WE8MSWIN1252
c:\>sqlplus user/[email protected] @Special_Char_CP1252.sql
Решение 3b
Создать SQL скрипт и сохранить его с UTF-8 который поддерживается большинством современных редакторов. Примечание. Сценарии SQL не должны содержать спецификацию (знак байтового заказа), иначе SQL * plus вызовет ошибку.Я нашел этот крошечный инструмент командной строки для добавления и удаления BOM из текстовых файлов произвольных: UTF BOM Utils
c:\>set NLS_LANG=.AL32UTF8
c:\>sqlplus user/[email protected] @Special_Char_UTF8.sql
Примечания для решения выше: вы можете пропустить set NLS_LANG
команды в случае, если ваш реестр устанавливаются соответствующим образом. Проверьте с помощью этой команды
C:\>REM for x64 Oracle Client
c:\>reg query HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ /s /v NLS_LANG
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1
NLS_LANG REG_SZ AMERICAN_SWITZERLAND.AL32UTF8
End of search: 1 match(es) found.
C:\>REM for x86 Oracle Client
c:\>reg query HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\ /s /v NLS_LANG
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_OraClient11g_home1
NLS_LANG REG_SZ AMERICAN_SWITZERLAND.AL32UTF8
End of search: 1 match(es) found.
C:\>
Solution 4
Запустите операторы INSERT из более сложного редактора, как ЖАБА или SQL Developer. Убедитесь, что значение NLS_LANG в реестре, соответственно. переменная вашей системной среды соответствует параметрам сохранения файла в редакторе.
Некоторые внешние ресурсы, которые могут помочь вам: документация
Список страниц Код: Code page
Найти Unicode элемент кода: Codepoints
Http: //docs.o racle.com/cd/B28359_01/server.111/b28298/ch2charset.htm – OldProgrammer
Возможный дубликат [Определение набора символов для столбца для таблиц базы данных оракула] (http://stackoverflow.com/questions/9956433/defining-a -haracter-set-for-a-column-for-oracle-database-tables) –
Из любопытства стоит значение «RR® 5» _real_, или вы фальсифицируете данные, поскольку этот столбец был определен с «неправильным» значением, кодирование? Это очень похоже на [mojibake] (http://en.wikipedia.org/wiki/Mojibake) ... –