Есть ли способ сохранить текст Unicode в базе данных Oracle, настроенной как «US7ASCII» - PullRequest
2 голосов
/ 21 апреля 2010

Недавно мы столкнулись с проблемой, когда символ товарного знака копируется из одной базы данных Oracle в другую, но он выглядит как «?».

Мы отследили проблему с базой данных назначения, для которой был настроен набор символов «US7ASCII». К сожалению, в настоящее время мы не можем сделать перестройку базы данных для решения этой проблемы.

Есть ли способ определить определенный столбец для использования набора символов, отличного от набора символов, настроенного на сервере?

Ответы [ 2 ]

5 голосов
/ 21 апреля 2010

вы можете использовать столбец NVARCHAR2 вместо столбца VARCHAR2. Посмотрите в представлении NLS_DATABASE_PARAMETERS, чтобы определить набор символов NVARCHAR2 (он всегда будет поддерживать юникод).

0 голосов
/ 21 апреля 2010

Вы можете использовать кодировку UTF-7 для хранения произвольных строк Юникода в 7-битной кодировке. Кодировка UTF-7 текста в Unicode оказывается вполне допустимым текстом ASCII.

Конечно, это потребует особого внимания везде, где вы хотите использовать значения, потому что они не читаются как есть (а UTF-7 используется достаточно редко, чтобы вы, вероятно, не поддерживали его везде).

В качестве альтернативы, вы можете использовать более распространенную кодировку, такую ​​как BASE64, но у нее есть недостаток, заключающийся в том, что даже текст почти ASCII полностью нечитаем в этой кодировке. Это означает, что вы не получаете, по крайней мере, что-то для чтения человеком, когда какая-то часть не правильно обрабатывает кодировку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...