Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   кодировка базы данных (http://forum.oszone.net/showthread.php?t=103492)

Vlad Drakula 23-03-2008 19:39 766247

кодировка базы данных
 
есть база она в CP1251

в ней есть русский текст, делаю к ней запрос из PHP вместо текст выводятся вопросики.

а если смотреть из PMA то текст показывается нормально, что нужно сделать чтобы у меня тоже он отображался правильно?

vadimiron 25-03-2008 14:04 767340

Вложений: 1
Надо кодировку connect-а менять на нужную.
инфа

PMA вроде тоже так делают (смотри рисунок)

Я вообще везде UTF-8 использую

stone_wings 06-04-2008 19:17 776122

Я тоже с этим мучаюсь. :( На серве БД в UTF-8 а на локалхосте СР1251... =\ В общем вытянутый файлик с локалхоста открываю через блокнот и сохраняю также только в "Юникод"е.... И после тыкаю тот скрипт на сервер.. Ну и обратно таким же макаром. :)

BarNet 09-04-2008 12:19 778071

Можна попробовать сделать так.
Код:

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()

rus-4-ever 10-04-2008 23:05 779211

Зачем так заморачиватся?

$db=mysql_pconnect('hostname','usrname','password');

mysql_select_db('DBName',$db);

mysql_query("SET NAMES cp1251");

И всё работает =)

stone_wings 21-04-2008 02:16 785840

Интересное дело получается.. :) Как грит rus-4-ever получается. Но когда смотрю через cmd->mysql при любой кодировке (пробЫвал командами set names/set character set) выдают кракозябру. Подскажите как перевести всё на один тип кодировки. (Я имею ввиду клиентскую и серверную части.) Насколько я понимаю там есть три типо этих кодировок.. Первая серверная, вторая входящие переменные, и третья исходящие...

stone_wings 24-04-2008 22:10 788585

Порылся в гугле в общем добился "вроде какого" результата.. Только подскажите вот что. В клиенте (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 792444

Веселуха блин.. Сбросил Wizard'ом настройки скуля, вношу в таблицу (всё по дефолту)... Но вот в браузерах (Осёл, Опера) вижу только "???????????" и что это такое? О.о Короче интересно всё как то...

ЗЫ: Опять же когда в коде (php) пишут "SET NAMES ...." показует нормально... РАССКАЖИТЕ ЧТО У МЕНЯ ТУТ ПРОИСХОДИТ! И как заставить выводить (хоть в какой нить адекватной кодировке) инфу под браузер. Плз! :(

tolbol 09-05-2008 19:18 798428

советую в качестве базы для своих разработок использовать такую КМС как Joomla, если во всех своих скриптах использовать подключение основных файлов джумлы таких как config, globals и joomla, то никаких проблем с кодировками быть не должно и всё прекрасно будет сохраняться и читаться в utf8, вообще завязывайте вы с использованием отечественных кодировок, utf8 это универсально и просто.
Пример кстати такой идеальной работы можно поглядеть здесь .

andrystepa 12-09-2008 15:50 897262

Ситуация такая. База нужна для веб сайта, и в ней записи на русском языке. При создании базы данных указывал опцию: 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 897284

Прошу прощения, нашел в чем дело! Просто в клиенте надо было указать кодировку:
Код:

mysql>SET NAMES 'cp1251'
и всего-то!!

tolbol 22-10-2008 20:02 930824

вот так всегда, решение оказалось простым, а чтоб к нему прийти пришлось столько всего вычитать.
И вообще хватит уже в разнобой с кодировками работать, берём одну на всех UTF-8 и всё, хотим на бурятском хотим на немецком пишем, главное понять как с этой кодировкой правильно работать. Для примера у себя на сайте http://www.7hitov.ru я использую именно UTF-8 и не хочу от неё отказываться.
Вобщем всем рекомендую UTF-8


Время: 10:50.

Время: 10:50.
© OSzone.net 2001-