Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Sybase ASE 12.5 UNICODE utf8 или utf16 ?
|
|||
|---|---|---|---|
|
#18+
Планируем перевод серверов с однобайтных кодировок на юникод. что лучше использовать для хранения char данных? unichar/univarchar (utf16) или nchar/nvarchar (utf8) кто-то с этим работал? какие есть проблемы? (кроме дурных редакторов процедур выдающих лишние пробелы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 17:08 |
|
||
|
Sybase ASE 12.5 UNICODE utf8 или utf16 ?
|
|||
|---|---|---|---|
|
#18+
Ну тут не надо работать с этим, тут чисто умозрительно. Если вам не нужно иметь в БД более двух языков, (английского, который есть всегда, и вашего родного), то вам юникод не нужен вообще. Иначе - надо выбирать между UTF-8 и UTF-16. Если выбираете UTF-16, то ЛЮБОЙ символ будет занимать 2 байта. Если UTF-8 - ANSI -7 bit (латиница) будут занимать 1 байт, остальные - два. Но чисто теоретически немного помедленнее будет обработка строк (я полагаю вы это вряд ли заметите). Поскольку я преимуществ UTF-16 перед UTF-8 не вижу, а места он займет меньше, то я бы выбирал его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 19:04 |
|
||
|
Sybase ASE 12.5 UNICODE utf8 или utf16 ?
|
|||
|---|---|---|---|
|
#18+
MasterZivЕсли выбираете UTF-16, то ЛЮБОЙ символ будет занимать 2 байта. Не факт. Может занимать как 2 так и 4 байта. Занимаемую длину можно определить из @@unicharsize. Преймущество unichar в простоте миграции с однобайтных кодировок. Не надо увеличивать длину в DDL и StoredProc как при использовании nchar, а только поменять тип. Т.е. если русские буквы хранились в однобайтном ASE используя тип varchar(10), то в юникод сервере должен быть varchar(20) или unichar( 10 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2006, 16:09 |
|
||
|
Sybase ASE 12.5 UNICODE utf8 или utf16 ?
|
|||
|---|---|---|---|
|
#18+
moris MasterZivЕсли выбираете UTF-16, то ЛЮБОЙ символ будет занимать 2 байта. Не факт. Может занимать как 2 так и 4 байта. Занимаемую длину можно определить из @@unicharsize. Простите, забыл , дествительно НЕ МЕНЕЕ 2-х. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2006, 20:22 |
|
||
|
Sybase ASE 12.5 UNICODE utf8 или utf16 ?
|
|||
|---|---|---|---|
|
#18+
У нас более двух языков поэтому юникод точно нужен. вопросы в следующем: какой должна быть серверная кодировка : utf8 или можно оставить roman8 (которая есть сейчас для однообразия администрирования разных серверов). если выбирать серверную utf8, то национальные символы в процедурах приводят к проблемам при использовании Код: plaintext unicode кодировки для сервера я так понимаю - нет. отсюда следующий вопрос: как лучше хранить в unichar char(10)=unichar(10) или utf8 char(10)=nchar(10)=char(30) //char*3 для китайцев др. иероглифов Мне лично больше нравится unichar(10) , но для базы родной юникод это utf8, поэтому не будет ли быстрее, правильнее, лучше использовать utf8? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 12:43 |
|
||
|
Sybase ASE 12.5 UNICODE utf8 или utf16 ?
|
|||
|---|---|---|---|
|
#18+
Dmitry. какой должна быть серверная кодировка : utf8 или можно оставить roman8 (которая есть сейчас для однообразия администрирования разных серверов). если выбирать серверную utf8, то национальные символы в процедурах приводят к проблемам при использовании Код: plaintext Так что раньше дефолтная кодировка была не в сp1251, а roman8? Если так, то русские буквы неправильно раньше хранились(не в сp1251), хотя и отображались читаемо. ASE при конверсии в utf8 не сможет определить что это есть русские буквы. Отсюда проблемы. P.S. Разумеется тогда и конверсия в другие русские кодировки не работает. Dmitry. unicode кодировки для сервера я так понимаю - нет. Как это нет?? До ASE12.5.1 есть только бинари сортировка для utf8. Но с ASE12.5.1 появились еще очень много различных юникод csid name description ----------- ---- ----------- 190 defaultml Default Unicode multi-lingual ordering 190 thaidict Thai dictionary ordering 190 iso14651 Ordering as per ISO14651 standard 190 utf8bin Ordering for UTF-16 that matches the binary ordering of UTF-8 190 binary Binary ordering for UTF-16 190 altnoacc Alternate (lower-case first) accent-insensitive dictionary ordering 190 altdict Alternate (lower-case first) dictionary ordering 190 altnocsp Alternate (lower-case first) case-insensitive dictionary ordering with order-by preference 190 scandict Scandinavian dictionary ordering 190 scannocp Scandinavian case-insensitive dictionary ordering with order-by preference 190 bin_utf8 Binary sort order for the ISO 10646-1, UTF-8 multibyte encoding character set (utf8). 190 dict General-purpose dictionary ordering 190 nocase General-purpose case-insensitve dictionary ordering 190 nocasep General-purpose case-insensitve dictionary ordering with order-by preference 190 noaccent General-purpose accent-insensitive dictionary ordering 190 espdict Spanish dictionary ordering 190 espnocs Spanish case-insensitive dictionary ordering 190 espnoac Spanish accent-insenitive dictionary ordering 190 rusnocs Russian case-insensitive dictionary ordering 190 cyrnocs Common cyrillic case-insensitive dictionary ordering 190 elldict Greek dictionary ordering 190 hundict Hungarian dictionary ordering 190 hunnoac Hungarian accent-insensitive dictionary ordering 190 hunnocs Hungarian case-insensitive dictionary ordering 190 turknoac Turkish accent-insensitive dictionary ordering 190 turknocs Turkish case-insensitive dictionary ordering 190 cp932bin Ordering that matches the binary ordering of the cp932 character set 190 dynix Chinese phonetic ordering 190 gb2312bn Ordering that matches the binary ordering of the gb2312 character set 190 cyrdict Common cyrillic dictionary ordering 190 turdict Turkish dictionary ordering 190 euckscbn Ordering that matches the binary ordering of the EUCKSC character set 190 gbpinyin Chinese phonetic ordering 190 rusdict Russian dictionary ordering 190 sjisbin Ordering that matches the binary ordering of the SJIS character set 190 eucjisbn Ordering that matches the binary ordering of the EUCJIS character set 190 big5bin Ordering that matches the binary ordering of the big5 character set ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 14:14 |
|
||
|
Sybase ASE 12.5 UNICODE utf8 или utf16 ?
|
|||
|---|---|---|---|
|
#18+
1. morisТак что раньше дефолтная кодировка была не в сp1251, а roman8? Если так, то русские буквы неправильно раньше хранились(не в сp1251), хотя и отображались читаемо. ASE при конверсии в utf8 не сможет определить что это есть русские буквы. Отсюда проблемы. P.S. Разумеется тогда и конверсия в другие русские кодировки не работает. а я и не говорил что там была кирилица :) там были французские буквы ... а проблема такая: процедуры вьюшки и триггера в базе хранятся порезанными по 255 символов. если поставить серверную кодировку utf8, создать процедуру с фр. символом и по размеру более 255 символов, и вызвать для нее Код: plaintext 2. я имел ввиду: unicode (utf16) character set для сервера я так понимаю - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 18:05 |
|
||
|
Sybase ASE 12.5 UNICODE utf8 или utf16 ?
|
|||
|---|---|---|---|
|
#18+
Dmitry.по 255 символов. если поставить серверную кодировку utf8, создать процедуру с фр. символом и по размеру более 255 символов, и вызвать для нее Код: plaintext Это просто defncopy не умеет бороться с лишними кусками строк. Это не страшно, но если нужно, могу выложить утилитку, которая делает то же что и defncopy, только без этих проблем. Только попозже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 18:31 |
|
||
|
Sybase ASE 12.5 UNICODE utf8 или utf16 ?
|
|||
|---|---|---|---|
|
#18+
Dmitry. а проблема такая: процедуры вьюшки и триггера в базе хранятся порезанными по 255 символов. если поставить серверную кодировку utf8, создать процедуру с фр. символом и по размеру более 255 символов, и вызвать для нее Код: plaintext Ну так режет она по 255 символов потому, что сам текст процедуры хранится в syscomment в поле varchar 255. Если очень длинная строка не вмещается, то продолжение будет в следущей строке syscomments. Если поставить utf8 как default, и будут очень длинные строки, то будет резать только русские буквы будет по 127, а только латинские по 255 символов. Что и следовало ожидать. Dmitry. 2. я имел ввиду: unicode (utf16) character set для сервера я так понимаю - нет. В ASE utf8 - обозначает в общем смысле ЮНИКОД. Pеализация utf16 идет через типы unichar и univarchar. Поэтому вы можете ставить по default utf8, а хранить данные в utf16 (unichar, univarchar). Cортировка для utf16 - бинарная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 21:02 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=33538863&tid=2013063]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 358ms |

| 0 / 0 |
