2015-01-30 2 views
1

Мне нужно вставить значение в таблицу Oracle 'RR® 5'?Как хранить ® в таблице оракула?

Я создал столбец таблицы varchar2 тип данных. Но когда я показываю данные, которые он показывает: 'RR?? 5'

Любая идея, пожалуйста.

+2

Http: //docs.o racle.com/cd/B28359_01/server.111/b28298/ch2charset.htm – OldProgrammer

+0

Возможный дубликат [Определение набора символов для столбца для таблиц базы данных оракула] (http://stackoverflow.com/questions/9956433/defining-a -haracter-set-for-a-column-for-oracle-database-tables) –

+0

Из любопытства стоит значение «RR® 5» _real_, или вы фальсифицируете данные, поскольку этот столбец был определен с «неправильным» значением, кодирование? Это очень похоже на [mojibake] (http://en.wikipedia.org/wiki/Mojibake) ... –

ответ

2

Прежде всего, вам нужно проверить, работает ли ваша база данных в кодировке символов, которая поддерживает специальные символы.

Выполнение этого запроса для проверки.

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 в реестре, соответственно. переменная вашей системной среды соответствует параметрам сохранения файла в редакторе.

Некоторые внешние ресурсы, которые могут помочь вам: документация

Смежные вопросы