Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно ли в одной талице много языков хранить, Вопрос о совместимости символов 
:(
    Опции темы
Gorcer
Дата 24.2.2005, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 30.6.2004
Где: Владивосток

Репутация: нет
Всего: 4



Здраствуйте!
Делаю сайт многоязыкавой. При проектировании столкнулся с таким вопросом, а можноли в одной таблице хранить информацию на разных языках.
например:

таблица: язык, название, содержание
1-я запись: RUS, ГлаваняСтраница, Добро пожаловать и т.д.
2-я запись: ENG, MainPage, Hello boy
3-я запись: JPN, (иероглифы), (иероглифы)

то, что первые две прокатят это я знаю, а вот третья и вабще записи с всякими нестандартными кодировками будут нормально храниться?




--------------------
Больнее всего получить удар от человека которому доверяешь.

<удалено администрацией>
PM MAIL WWW ICQ Skype   Вверх
GoodBoy
Дата 24.2.2005, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Если использовать юникод в качестве основной кодировки - то думаю можно.


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Gorcer
Дата 24.2.2005, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 30.6.2004
Где: Владивосток

Репутация: нет
Всего: 4



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


--------------------
Больнее всего получить удар от человека которому доверяешь.

<удалено администрацией>
PM MAIL WWW ICQ Skype   Вверх
GoodBoy
Дата 24.2.2005, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Gorcer, ты о чем???


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Gorcer
Дата 24.2.2005, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 30.6.2004
Где: Владивосток

Репутация: нет
Всего: 4



Разовьем немного тему.................
Допустим из данных таблицы я формирую XML документ, в нем если я укажу encoding='Unicode', то символы русской кодировки сразуже станут причиной ошибки, так как неподдерживаются данной кодировкой, также как и японские.

И вабще, если мы задаем кодировку для таблицы, то как в её 255 символов умещаются и русские и китайские и японские символы ?


--------------------
Больнее всего получить удар от человека которому доверяешь.

<удалено администрацией>
PM MAIL WWW ICQ Skype   Вверх
GoodBoy
Дата 24.2.2005, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Gorcer
Юникод отводит по 2 байта на символ, а по по одному! И хоть убей но я не пойму почему должно быть вот так:
Цитата(Gorcer @ 24.2.2005, 15:37)
если я укажу encoding='Unicode', то символы русской кодировки сразуже станут причиной ошибки, так как неподдерживаются данной кодировкой, также как и японские

Хотя проблемы корректности XML-документа имеет очень отдалённое отношение к MySQL. smile


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Gorcer
Дата 24.2.2005, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 30.6.2004
Где: Владивосток

Репутация: нет
Всего: 4



лано, небудем лезть в XML.....

Хоть убей непойму как в юникод все языки можно поместить, даже с учетом 2 байт,....там же помимо букв еще и спецсимволов целый лес.

Или я чегото непойму......
может при формировании страницы нужно брать юникодовское поле текста и посимвольно по коду символа переводить их в кодировку для конкретной страны (типа Японскую или Русскую) и также поступать при вставке данных в базу?????


--------------------
Больнее всего получить удар от человека которому доверяешь.

<удалено администрацией>
PM MAIL WWW ICQ Skype   Вверх
GoodBoy
Дата 24.2.2005, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



2 байта - 65536 вариантов! Влезут символы и ВСЕХ национальных алфавитов, и спецсимволы и ещё куча всего!!!
:-)))))))))

http://home.att.net/~jameskass/INDEXUNI.HTM


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Wowa
Дата 24.2.2005, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(GoodBoy @ 24.2.2005, 14:59)
2 байта - 65536 вариантов! Влезут символы и ВСЕХ национальных алфавитов, и спецсимволы и ещё куча всего!!!
:-)))))))))

http://home.att.net/~jameskass/INDEXUNI.HTM


Вот-вот!


Цитата(Gorcer @ 24.2.2005, 13:37)
если я укажу encoding='Unicode'

укажи encoding='UTF-8'
PM WWW   Вверх
Gorcer
Дата 24.2.2005, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 30.6.2004
Где: Владивосток

Репутация: нет
Всего: 4



Товарищи мужики!
Своей увереной категоричностью вы меня убедили!
С прошедшим вас праздником и мой респект.
Спасибо за все.....буду делать как сказали:)


--------------------
Больнее всего получить удар от человека которому доверяешь.

<удалено администрацией>
PM MAIL WWW ICQ Skype   Вверх
Gorcer
Дата 1.3.2005, 06:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 30.6.2004
Где: Владивосток

Репутация: нет
Всего: 4



Вот вопрос появился, пишу в поле текст "абвгде", делаю апдейт таблицы юникодовской, а там заместо веденного текста появляеться чтото типа: "абвгде"

????..что делать.....


--------------------
Больнее всего получить удар от человека которому доверяешь.

<удалено администрацией>
PM MAIL WWW ICQ Skype   Вверх
Wowa
Дата 1.3.2005, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



У тебя значит неправильно стоит кодировка той страницы, в поле которой ты пишешь
Цитата(Gorcer @ 1.3.2005, 04:21)
пишу в поле текст "абвгде",


PM WWW   Вверх
Gorcer
Дата 1.3.2005, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 30.6.2004
Где: Владивосток

Репутация: нет
Всего: 4



Да нет, все тотже Юникод.


--------------------
Больнее всего получить удар от человека которому доверяешь.

<удалено администрацией>
PM MAIL WWW ICQ Skype   Вверх
Zandr
Дата 4.3.2005, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

Репутация: нет
Всего: 13



Mysql 4.1.10

Цитата

file: my.ini

[mysqld]
default-character-set=utf8

Тут указывается кодировка, которая будет использоваться по умолчанию при создании новых таблиц.

Когда соединяешься с базой, то клиент должен дать понять в какой кодировке будет отдавать/забирать данные.

Например, в стандартном клиенте в виндовой консоли после соединения с БД первым делом делаем:
Код

set character set=cp866

либо прописываем это в том же конфиге, либо даем кодировку в командной строке mysql.exe

Если соединяешься из приложения (или скрипта), то могут быть другие способы указания кодировки. Например в стандартном JDBC драйвере (Java) set character set пользовать нельзя, т.к. драйвер самостоятельно согласует с сервером кодировку передачи данных.
PM MAIL   Вверх
Wowa
Дата 4.3.2005, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Zandr, ну блин. Конфиг далеко не всегда может быть доступен и зачем мне все базы создавать в UTF8, когда надо только одну?
PM WWW   Вверх
Zandr
Дата 4.3.2005, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

Репутация: нет
Всего: 13



ну если одну таблицу, то вроде вот так можно:
Код

CREATE TABLE tbl_name (column_list) DEFAULT CHARACTER SET charset_name [COLLATE collation_name]

Смысл в этом есть, только если большая часть данных будет одного языка, причем не английского (русского, например)

Но по-моему лучше начинать юзать юникод где ни попадя smile

Это сообщение отредактировал(а) Zandr - 4.3.2005, 12:46
PM MAIL   Вверх
Guest
Дата 4.3.2005, 13:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Admin @ 4.3.2005, 12:26)
Конфиг далеко не всегда может быть доступен

дааа!!!!
мне изза недостатка опыта кажеться, что на нормальном хостинге файл my.ini небудет вам доступен!
  Вверх
Wowa
Дата 4.3.2005, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(Guest @ 4.3.2005, 11:52)

дааа!!!!
мне изза недостатка опыта кажеться, что на нормальном хостинге файл my.ini небудет вам доступен!


Конечно не будет. Да и вообще это не выход - всем создаваемым базам ставить UTF8, когда мне только одна база нужна.
PM WWW   Вверх
Gorcer
Дата 4.3.2005, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 30.6.2004
Где: Владивосток

Репутация: нет
Всего: 4



Цитата(Zandr @ 4.3.2005, 12:45)
[COLLATE collation_name]

простите дурака, но что ЭТО ^ такое?
Добавлено @ 14:22
Цитата(Zandr @ 4.3.2005, 12:45)
Смысл в этом есть, только если большая часть данных будет одного языка, причем не английского (русского, например)

Но по-моему лучше начинать юзать юникод где ни попадя 

1)А какая разница сколько и каких данных будет в базе?
2)А что значит юзать где нипопадя?....можно уточнить имеемые ввиду места..




--------------------
Больнее всего получить удар от человека которому доверяешь.

<удалено администрацией>
PM MAIL WWW ICQ Skype   Вверх
Zandr
Дата 4.3.2005, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

Репутация: нет
Всего: 13



Мдя, придется мне отвечать за базар smile

Цитата
что ЭТО ^ такое?

collation - точного термина не дам, но это данные для сортировки. В кодировке символы могут идти не так как в алфавите. Например посмотрите на коды букв 'а', 'ё', 'я' в раскладке cp1251. Если сортировать по кодам символов, то алфавитного порядка не получим. Мало того - я раньше думал, что cp1251 - это для русского языка. Оказывается для
Цитата
Belarusian, Bulgarian, Macedonian, Russian, Serbian, Mongolian, Ukrainian.
Так вот collation - это порядок кодов символов или около того. Блин, кто понял о чем я - сформулируйте по-человечески плз... smile

Цитата
какая разница сколько и каких данных будет в базе?

По большому счету никакой smile Винты щас несколько опережают по объемам нужды среднестатистических пользователей и не только. Просто в utf8 коды символов всех алфавитов, кроме латинского, занимают по два байта. Если у тебя в базе будет только латиница и русский, то можно (и наверное нужно) использовать cp1251 или там koi8r. Ну а если еще какой-нить язык, то utf8 либо по другому решать проблему.

Цитата
А что значит юзать где нипопадя?....можно уточнить имеемые ввиду места

Сорри, погорячился. Проникся Java. Там внутри приложения все в юникоде. Очень приятно не греть лишний раз голову по поводу кодировок (перекодировок, переперекодировок.....) Юзайте, конечно, что хотите и где хотите smile

Это сообщение отредактировал(а) Zandr - 4.3.2005, 14:57
PM MAIL   Вверх
Gorcer
Дата 14.3.2005, 03:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 30.6.2004
Где: Владивосток

Репутация: нет
Всего: 4



Начал реализовывать и сразу заше в тупик:
вот это неработает:
Код

CREATE TABLE Page_ObshInfo (
       language             varchar(5),
       MainImage            int,
       Content              binary ) default character set 'utf8';


пишет
Код

 ошибка синтаксиса near ') default character set 'utf8';'


почему???......в спецификации к mysql посмотрел и вабще ненашел как определять кодировку к таблице,........может это здесь невозможно?


--------------------
Больнее всего получить удар от человека которому доверяешь.

<удалено администрацией>
PM MAIL WWW ICQ Skype   Вверх
GoodBoy
Дата 14.3.2005, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Gorcer
примерно так:
Код
CREATE TABLE `catalog_config` (
  `var_name` varchar(50) NOT NULL default '',
  `var_descr` varchar(50) NOT NULL default '',
  `var_value` varchar(250) NOT NULL default '',
  PRIMARY KEY  (`var_name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;



--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0661 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.