Показать полную графическую версию : кодировка базы данных
Vlad Drakula
23-03-2008, 19:39
есть база она в CP1251
в ней есть русский текст, делаю к ней запрос из PHP вместо текст выводятся вопросики.
а если смотреть из PMA то текст показывается нормально, что нужно сделать чтобы у меня тоже он отображался правильно?
vadimiron
25-03-2008, 14:04
Надо кодировку connect-а менять на нужную.
инфа (http://dev.mysql.com/doc/refman/5.1/en/charset-connection.html)
PMA вроде тоже так делают (смотри рисунок)
Я вообще везде UTF-8 использую
stone_wings
06-04-2008, 19:17
Я тоже с этим мучаюсь. :( На серве БД в UTF-8 а на локалхосте СР1251... =\ В общем вытянутый файлик с локалхоста открываю через блокнот и сохраняю также только в "Юникод"е.... И после тыкаю тот скрипт на сервер.. Ну и обратно таким же макаром. :)
Можна попробовать сделать так.
ALTER TABLE table1 CONVERT TO CHARACTER SET cp1251_general_ci
ALTER TABLE table1 DEFAULT CHARACTER SET cp1251_general_ci
ALTER DATABASE database1 DEFAULT CHARACTER SET cp1251_general_ci
Или попробовать CONVERT() and CAST() (http://dev.mysql.com/doc/refman/5.0/en/charset-convert.html)
rus-4-ever
10-04-2008, 23:05
Зачем так заморачиватся?
$db=mysql_pconnect('hostname','usrname','password');
mysql_select_db('DBName',$db);
mysql_query("SET NAMES cp1251");
И всё работает =)
stone_wings
21-04-2008, 02:16
Интересное дело получается.. :) Как грит rus-4-ever получается. Но когда смотрю через cmd->mysql при любой кодировке (пробывал командами set names/set character set) выдают кракозябру. Подскажите как перевести всё на один тип кодировки. (Я имею ввиду клиентскую и серверную части.) Насколько я понимаю там есть три типо этих кодировок.. Первая серверная, вторая входящие переменные, и третья исходящие...
stone_wings
24-04-2008, 22:10
Порылся в гугле в общем добился "вроде какого" результата.. Только подскажите вот что. В клиенте (EMS 4.1) показывает нормально (Charset client стоит UTF8), в коде не совсем (приходится писать "set names utf8"), а в cmd->mysql бракозябра (но радует что не вопросы, т.к. видимо кодировку правильно ввёл). В комадной строке писал "set names utf8", "set charset utf8" не помогло... Какие есть варинты... Хочу что бы в клиенте и в командной строке отображало одинково (utf8 ну или cp1251), и что б в коде (php) не надо было писать "set names ***". Как это всё сделать?
ЗЫ: Ведь знает кто то.. Подскажите.. В манке на dev.mysql.com ответа не нашёл. :(
stone_wings
30-04-2008, 23:22
Веселуха блин.. Сбросил Wizard'ом настройки скуля, вношу в таблицу (всё по дефолту)... Но вот в браузерах (Осёл, Опера) вижу только "???????????" и что это такое? О.о Короче интересно всё как то...
ЗЫ: Опять же когда в коде (php) пишут "SET NAMES ...." показует нормально... РАССКАЖИТЕ ЧТО У МЕНЯ ТУТ ПРОИСХОДИТ! И как заставить выводить (хоть в какой нить адекватной кодировке) инфу под браузер. Плз! :(
советую в качестве базы для своих разработок использовать такую КМС как Joomla, если во всех своих скриптах использовать подключение основных файлов джумлы таких как config, globals и joomla, то никаких проблем с кодировками быть не должно и всё прекрасно будет сохраняться и читаться в utf8, вообще завязывайте вы с использованием отечественных кодировок, utf8 это универсально и просто.
Пример кстати такой идеальной работы можно поглядеть здесь (http://www.7hitov.ru) .
andrystepa
12-09-2008, 15:50
Ситуация такая. База нужна для веб сайта, и в ней записи на русском языке. При создании базы данных указывал опцию: CHARACTER SET cp1251. Создал файл с данными для одной из таблиц базы в кодировке cp1251. Добавляю его в таблицу с помощью LOAD DATA INFILE.... В терминале смотрю таблицу:
SELECT * FROM makers;
- получаю имена мейкеров в виде
????.?. Думаю, может терминал не понимает. Посмотрел в Настройка->Кодировка стоит cp1251. Очистил таблицу, затем установил кодировку для конкретной таблицы:
ALTER TABLE makers CONVERT TO CHARACTER SET cp1251 COLLATE cp1251_general_ci;
Опять добавил записи в таблицу - ничего не изменилось. Опять одни знаки вопроса, вместо букв! Как же все-таки сделать правильно?
andrystepa
12-09-2008, 16:07
Прошу прощения, нашел в чем дело! Просто в клиенте надо было указать кодировку:
mysql>SET NAMES 'cp1251'
и всего-то!!
вот так всегда, решение оказалось простым, а чтоб к нему прийти пришлось столько всего вычитать.
И вообще хватит уже в разнобой с кодировками работать, берём одну на всех UTF-8 и всё, хотим на бурятском хотим на немецком пишем, главное понять как с этой кодировкой правильно работать. Для примера у себя на сайте http://www.7hitov.ru я использую именно UTF-8 и не хочу от неё отказываться.
Вобщем всем рекомендую UTF-8
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.