Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/82: Рейтинг темы: голосов - 82, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 22.07.2008
Сообщений: 16
1

Кодировка UTF-8 в полях таблицы

27.07.2008, 13:05. Показов 16758. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Какой тип необходимо использовать при созадании таблицы, если данные водятся в кодировке UTF-8?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.07.2008, 13:05
Ответы с готовыми решениями:

Кодировка utf-8
Заношу в БД mySQL информацию из формы и конечно же отображается не понятно что... При создании...

Кодировка UTF-8
В кодировке UTF-8 Hello world = "\x48\x65\x6c\x6c\x6f\x20\x77\x6f\x72\x6c\x64". Почему в обычном...

Qt кодировка UTF-8
Добрый вечер. Получаю данные и помещаю их в QByteArray. За место русских символов в массиве вот...

Кодировка UTF-8
Собственно есть БД MySql. Из которой на модальное окно динамически добавляются <input> по нажатию...

14
0 / 0 / 0
Регистрация: 23.07.2008
Сообщений: 44
27.07.2008, 21:36 2
Oracle поддерживает 2 character set'а: Database Character set (тип полей CHAR и VARCHAR2) и National Character Set (тип полей NCHAR и NVARCHAR2).

Оба задаются при создании базы.
Если какой-то из них - UTF8, можно использовать соответствующие типы полей.

Изменить оба сета можно коммандой alter database [national] character set, однако это может привести к проблемам, если в базе уже используются поля соответствующих типов.

r-ivan.
0
0 / 0 / 0
Регистрация: 22.07.2008
Сообщений: 16
28.07.2008, 12:30  [ТС] 3
Так, какой тип нужно применить для UTF-8?
База только проектируется.
0
0 / 0 / 0
Регистрация: 23.07.2008
Сообщений: 44
28.07.2008, 13:42 4
На первый взгляд лучше всего - поставьте character set = utf8 и пользуйтесь типом varchar2.

Честно говоря, никогда так не пробовал, не знаю какие могут быть глюки.

Если это по каким-то причинам нежелательно, можно поставить national character set = utf8 и пользоваться типом nvarchar2.

Да, ещё надо иметь в виду, что длина поля задаётся в байтах, а не в символах.
0
0 / 0 / 0
Регистрация: 22.07.2008
Сообщений: 16
28.07.2008, 13:53  [ТС] 5
Под термином 'character set', Вы имеете в виду значение глобальной переменной NLS_LANG на сервере?
0
0 / 0 / 0
Регистрация: 23.07.2008
Сообщений: 44
28.07.2008, 14:13 6
Не совсем так. Параметр NLS_LANG определяет кодировку, которую будут исползовать клиентские приложения, запущенные на сервере. Charsets базы задаются при её инсталляции и впоследствии могут быть изменены только при помощи alter database.

Посмотреть их можно в таблице nls_database_parameters where parameter in ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET')
0
0 / 0 / 0
Регистрация: 22.07.2008
Сообщений: 16
28.07.2008, 14:32  [ТС] 7
Вот результат запроса:
NLS_CHARACTERSET = US7ASCII
NLS_NCHAR_CHARACTERSET = US7ASCII

Вы предлагаете их заменить на UTF8, а какое значение при этом должна иметь NLS_LANG, сейчас она - AMERICAN_AMERICA.WE8ISO8859P1,
я пробовал AMERICAN_AMERICA.UTF8 - не помогает - кириллицы не понимает.
0
0 / 0 / 0
Регистрация: 23.07.2008
Сообщений: 44
28.07.2008, 14:53 8
По-моему, в этом варианте (US7ASCII), кирилица в базе не может корректно храниться (и показываться, естественно, тоже - каким бы не был NLS_LANG).

В NLS_LANG должна быть кодировка, которую понимают клиентские приложения на данной машине (можно и UTF8). За перекодировку отвечает Oracle.

Попробуйте для начала поэкспериментировать с national character set и типом nvarchar2.

Вообще, если нужна только кирилица, лучше не заморачиваться на UTF8, а использовать однобиьные кирилические кодировки.
0
0 / 0 / 0
Регистрация: 22.07.2008
Сообщений: 16
28.07.2008, 15:10  [ТС] 9
NVARCHAR2 - кириллицы не проходят, при вставке Oracle выдает сообщение character set mismatch.

В базе будет три языка (русский, английский и арабский).
0
0 / 0 / 0
Регистрация: 23.07.2008
Сообщений: 44
28.07.2008, 15:31 10
Так national character set надо предварительно поменять (на UTF8).
0
0 / 0 / 0
Регистрация: 22.07.2008
Сообщений: 16
30.07.2008, 17:11  [ТС] 11
Не удается менять эти параметры, сервер говорит, что это нужно сделать, когда база в неактивном состоянии.

Ну, ведь к неактивной базе невозможно соединиться.
0
0 / 0 / 0
Регистрация: 23.07.2008
Сообщений: 44
30.07.2008, 18:30 12
Запустите SQL*Plus из командной строки:
sqlplusw /nolog

Далее в SQL*Plus:
SQL> connect <username>/<password> as sysdba;
SQL> startup force restrict
SQL> alter database national character set UTF8;
SQL> startup force
0
0 / 0 / 0
Регистрация: 22.07.2008
Сообщений: 16
30.07.2008, 19:01  [ТС] 13
Вот что пишет:
database must be mounted EXCLUSIVE and not open to activate
0
0 / 0 / 0
Регистрация: 30.05.2014
Сообщений: 2
09.09.2008, 15:22 14
А зачем человеку заморачиваться с nvarchar/nchar ?
В случае поддержки 3-х несхожих языков и большого проще всю базу перевести на UTF8. Правда при этом максимально допустимые размеры строковых типов уменьшатся.
Код
SQL> connect <username>/<password> as sysdba;
SQL> startup force exclusive restrict
SQL> alter database character set UTF8;
SQL> startup force
0
0 / 0 / 0
Регистрация: 30.05.2014
Сообщений: 2
09.09.2008, 15:24 15
в дополнение:
опцию force лучше не использовать на открытой базе, т.к. она закрывает ее abort-ом, что не есть хорошо.
лучше оную опцию выкинуть из команд, а базу перед изменением чарсета закрыть хотя бы shutdown immediate
0
09.09.2008, 15:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2008, 15:24
Помогаю со студенческими работами здесь

Кодировка UTF-8
Файл PHP сохранен под UNF-8 кодировкой. когда ввожу кириллицей данные в базу данных, он записывает...

Кодировка UTF-8 в PHP
Проблема заключается в том, что не отображаются данные, подозреваю кодировку, ибо... Кодировка...

Кодировка UTF-8 не функционирует
Доброго времени суток! Обращаюсь к вам за помощью, потому как я уже просто не знаю что еще можно...

Не работает кодировка utf-8
Все файлы сохранены в UTF8 (no boom); .htaccess (AddDefaultcharset utf-8); в скриптах ввода...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru