| |
|
|
| | Здравствуйте. Решил ввести в CMS Proteus полноценную работу с кодировками. У меня возникает несколько вопросов:
Как хранить данные в базе?
ВАриант №1
В одной таблице хранятся данные на нескольких языках с различными кодировками. Все таблицы используют одну и ту же кодировку, кодировку БД по умолчанию. Вопросы:
1. Подскажите, пожалуйста, запрос на получение кодировки БД. Совместим ли он ссо вмеми версиями mysql, начиная с 3.0?
2. Подойдет ли такая схема перекодирования пользовательских данных:
при выводе: кодировки таблицы -> кодировка сайта
при вводе: кодировки сайта -> кодировка таблицы
3. В php для перекодировки существует функция iconv(). Есть ли подобные средства у бд? Какими средствами предпочтительно пользоваться?
Вариант №2
Иметь несколько версий таблиц для различных языков/кодировок. Каждая версия таблицы имеет префикс типа en/ru. Такой вариант сильно усложняет код.
Файловые данные досточно просто хранить в нужной кодировке.
Никто не знает где можно достать список существ. кодировок на англ. языке?
Можно ли как-то решить проблему несовпадения кодировки пользовательских данных с кодировкой сайта?
Заранее спасибо. | |
| |
|
|
| |
|
|
| |
для: antf
(08.12.2006 в 16:50)
| | | В MySQL начиная с версии 4.1 хранить текст можно в одной кодировке, например, в UTF8, а при выдаче конвертировать в нужную путём настройки кодировки соединения. К сожалению, с более ранними версиями это не пройдёт. | |
| |
|
|
| |
|
|
| |
для: cheops
(09.12.2006 в 00:19)
| | | Тогда придется использовать средства php...
1) Является ли работоспособным 1-й вариант?
2) Можно ли узнать кодировку всей базы данных с помощью sql-запроса?
3) Можно ли перекодировать данные средствами php по схеме, указанной в пункте 2?
4) Как я понимаю при использовании первого варианта не потребуется после соединения с базой выполнять серию запросов на уставку кодировки? | |
| |
|
|
| |
|
|
| |
для: antf
(09.12.2006 в 00:56)
| | | Для того, чтобы получить универсальное решение (для всех версий) вероятно придётся использовать поля типа BLOB и брать управление кодировками на себя, поиск будет регистрозависимый... Однако, определить кодировку просто по тексту не всегда возможно - по-моему универсального решения нет. | |
| |
|
|
| |
|
|
| |
для: cheops
(09.12.2006 в 14:29)
| | | >> Для того, чтобы получить универсальное решение (для всех версий) вероятно придётся использовать поля типа BLOB
Это уже слишком... Буду ориентироваться на версии 4.1
Хранить текст в utf-8, а выводить в кодировке сайта - приемлемый вариант. Как я понимаю, кодировка выводимых данных определяется в этой серии запросов:
<?php
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
?>
[/php]
|
А разрешает ли хост-провайдер устанавливать кодировку для всей базы, выполнять запрос:
ALTER DATABASE wet
CHARACTER SET cp1251
|
А где можно найти список всех кодировок? Совпадают ли обозначения кодировок mysql с обозначениями, кот. указываются в мета-тегах? | |
| |
|
|
| |
|
|
| |
для: antf
(09.12.2006 в 15:01)
| | | >Как я понимаю, кодировка выводимых данных определяется в этой серии запросов:
Да.
>А разрешает ли хост-провайдер устанавливать кодировку для всей базы, выполнять запрос:
Не всегда... лучше выставлять кодировку для таблиц - это будет всегда разрешено.
>А где можно найти список всех кодировок? Совпадают ли обозначения кодировок mysql с
>обозначениями, кот. указываются в мета-тегах?
Это можно выяснить, выполнив запрос
Для того, чтобы получить полный список сортировок следует выполнить запрос
| |
| |
|
|