Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Кодировка, кириллица, латиница... помогите!  [new]
A.C. (C'est moi)
Guest
Столкнулся с проблемой, с которой никогда прежде не сталкивался. Заказчик требует, чтоб БД поддерживала английский, русский и ФРАНЦУЗСКИЙ язык. Во французском же языке есть чёртова пропасть букв с верхними и нижними хвостиками. И как быть, ума не приложу. Может, кто-нибудь сталкивался?

Уточняю вопрос. Никакое поле ни в какой таблице не будет содержать вперемешку разноязычных текстовок. Но один и тот же пользователь на своём рабочем месте должен иметь возможность набирать текст и по-русски, и по-французски в одном и том же рабочем окне.

Может, кто-нибудь с подобной проблемой сталкивался?
Как мне оптимально настроить сервер?
Должен ли я работать с Unicode? я с ней никогда не сталкивался и не знаю про неё ничего
Должен ли я иметь дело с Nvarchar? и как с таким работать?

Заранее благодарен за любые советы.
3 апр 06, 14:04    [2517864]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
Endevor
Member

Откуда:
Сообщений: 19
Можно и так, и так. Но, наверное, UNICODE более просто. Поставил, и забыл.
Другое дело, что для этого скорее всего придется пересоздать базу.
Кодировка задается при создании.
Можно попробовать (ой, не помню названия утилиты) перегрузить кодировку существующую в кодировку UNICODE.
В руководствах упоминается, что может немного снизится производительность.
- Обслуживать UNICODE более сложно, но на деле, при современных серверах, думаю, это не заметно.
3 апр 06, 14:12    [2517912]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
RedALIEN
Member

Откуда:
Сообщений: 11
Зачем пересоздавать? Берите nvarchar заместо varchar в нужные поля и всего делов. Туда любые символы запихать можно, иероглифы даже. При создании базы у Вас спрашиваются кодировки для обычных полей (char) и для юникодных (nchar).
3 апр 06, 15:00    [2518193]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
XCB
Member

Откуда:
Сообщений: 727
я конечно французский только в школе учил... и уж давно забыл...
3 апр 06, 15:18    [2518320]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
XCB
Member

Откуда:
Сообщений: 727
сори... но, мне помнится, там теже 26 букв латинского алфавита...
3 апр 06, 15:19    [2518326]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
Endevor
Member

Откуда:
Сообщений: 19
Может оказаться, что на базе уже висят приложения, скрипты и т.д.
И добавлять поля - нужно будет переписывать их. Проблемы!
3 апр 06, 16:10    [2518697]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
A.C. (C'est moi)
Guest
RedALIEN
Берите nvarchar заместо varchar в нужные поля и всего делов. Туда любые символы запихать можно, иероглифы даже. При создании базы у Вас спрашиваются кодировки для обычных полей (char) и для юникодных (nchar).


А можно чуть подробнее?
Когда у меня спрашивают кодировки? При инсталляции сервера? А если сервер уже есть? При создании схемы? При создании таблицы? И как запихать символы в nvarchar? И нельзя ли примерчик на пару строк? Заранее спасибо.

XCB
мне помнится, там теже 26 букв латинского алфавита...

А фигушки. Там буквы со штришками: é è ê ë ù û ü ÿ ô ö à â ä î ï ç.
3 апр 06, 18:15    [2519293]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
Flukky
Member

Откуда: Рига
Сообщений: 488
create table test_unicode (
	 id    number(10)
	,text  nvarchar2(2000)
);

insert into test_unicode values (1,"AAA");

ORA-00984: column not allowed here
3 апр 06, 23:14    [2519902]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
Elic
Member

Откуда:
Сообщений: 29988
Flukky
insert into test_unicode values (1,"AAA");
ORA-00984: column not allowed here
Идиот, RTFM Schema Object Naming Rules (FAQ)
4 апр 06, 06:48    [2520074]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18363
Elic
Flukky
insert into test_unicode values (1,"AAA");
ORA-00984: column not allowed here
Идиот, RTFM Schema Object Naming Rules (FAQ)

Flukky, не грузитесь. Elic предлагает Вам заменить кавычки "..." на '...'
4 апр 06, 11:38    [2520909]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
A.C. (C'est moi)
Guest
Кавычки Flukky, конечно, набрал не те, но от этого не легче:

create table test_unicode (
id number(10)
,text nvarchar2(2000)
);

insert into test_unicode values (1,'AAA');


(Error): ORA-12704: character set mismatch
4 апр 06, 14:17    [2521977]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
Elic
Member

Откуда:
Сообщений: 29988
A.C. (C'est moi)
(Error): ORA-12704: character set mismatch
RTFM Text Literals (FAQ)
4 апр 06, 14:29    [2522066]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
A.C. (C'est moi)
Guest
Elic: по той ссылке я понял, что перед строкой надо N рисовать (так бы сразу и сказали!). Нарисовал insert into test_unicode values (1, N'AAA'). Прошло. AAA я вставил. Прекрасно. А дальше? Как мне, собственно, сказать, что речь идёт о французских буквах, и как их ввести?
4 апр 06, 16:40    [2522997]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
Flukky
Member

Откуда: Рига
Сообщений: 488
andrey_anonymous
Elic
Flukky
insert into test_unicode values (1,"AAA");
ORA-00984: column not allowed here
Идиот, RTFM Schema Object Naming Rules (FAQ)

Flukky, не грузитесь. Elic предлагает Вам заменить кавычки "..." на '...'


Вот те на - совсем заработался! И главное сидел думал минут 10 в чём проблема :-)
За информацию про N огромное спасибо!
5 апр 06, 10:11    [2525302]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
Flukky
Member

Откуда: Рига
Сообщений: 488
create table test_unicode (
	 id    number(10)
	,text  nvarchar2(2000)
);

insert into test_unicode values (1,'John-Jānis-Иван'); -- english, latvian, russian

procedure test
is
   v_text  nvarchar2(32000);
begin
   select text into v_text from test_unicode where id = 1;
   htp.print(v_text);
end test;

В окошке броузера правильно отображается только английский и латышский язык. Кодировка Unicode (UTF-8).

V_$NLS_PARAMETERS:
NLS_LANGUAGE	LATVIAN
NLS_CHARACTERSET	UTF8
NLS_NCHAR_CHARACTERSET	AL16UTF16

Нужны какие-то дополнительные настройки Web сервера?
5 апр 06, 10:30    [2525406]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
Flukky
Member

Откуда: Рига
Сообщений: 488
Извиняюсь, опечатался. Там в инсерте n перед текстом 'John...
5 апр 06, 10:34    [2525435]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
vgindin
Member

Откуда:
Сообщений: 2
Приветствую всех. У меня аналогичная проблема: На сервере Linux, стоит Oracle 10, в котором храняться данные с веб-приложения. Проблема в том, что Русские символы сохраняются в BLOB-полях как знаки вопроса. CLOB поля использовать не могу. Я читал предыдущие посты и пытался решить эту проблему след. образом: (везде в приложении используется utf-8) я прописывал в NLS_LANG кодовую страницу UTF8 и пересоздавал базу. Не помогло. Пробовал и другие (WE8ISO8859P15, CLкакая-то, забыл) Языки в базе: основной набор: американский, а национальный - русский. Кто-нибудь знает, как справиться с таким багом?
17 апр 06, 14:27    [2570862]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
oz
Member

Откуда: Kharkov
Сообщений: 321
www.oracle.com
Поддержка национальных языков предусматривает не только перевод сообщений СУБД и инструментальных средств, но и поддержку различных кодовых страниц, включая конвертацию символьных данных между ними, форматов даты и времени, форматов чисел, денежных единиц, лингвистических порядков сортировки и т.д. Начиная с версии 8.0, каждая инсталляция СУБД Oracle может поддерживать две различные кодовые страницы при хранении символьных данных: основную и национальную. В столбцах типов CHAR, VARCHAR2 и CLOB символьные данные хранятся в кодировке, которая была установлена фразой CHARACTER SET оператора CREATE DATABASE. В столбцах типов NCHAR, NVARCHAR2 и NCLOB символьные данные хранятся в кодировке, которая была установлена фразой NATIONAL CHARACTER SET оператора CREATE DATABASE. Наличие двух кодовых страниц хранения позволяет сохранять в БД данные, по крайней мере, на двух языках, не считая английского, одновременно.

Хм... Очень странно. Я правильно понимаю, что кроме русского я могу иметь поддержку только одного альтернативного национального языка? Мне казалось, что NCHAR, NVARCHAR2 и NCLOB - типы данных, предусмотренные для хранения текстовой информации в любой кодировке.

ЗЫ: взято отсюда: тынц
17 дек 06, 22:01    [3547692]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка, кириллица, латиница... помогите!  [new]
oz
Member

Откуда: Kharkov
Сообщений: 321
Flukky
...
insert into test_unicode values (1,N'John-Jānis-Иван'); -- english, latvian, russian
...

И кстати, подскажите плиз как сиё реализуется через параметры. Не могу разрулить синтаксически.
17 дек 06, 22:07    [3547705]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить