LinuxForum.Fans
Тема

Кириллица в MySQL

Автор: Dima 16 сообщений 6715 просмотров
#12386

На Windows с этим проблем не было.. т.е. всё отображалось нормально как в MySQL так и в PHP файла...
На Linux проблема с кодировками..Подскажите пожалуйста какие должны быть кодировки php файлов,и БД MySQL .. Думал повторить как на Windows но корректно выводится текст с БД или текст в PHP...

#12387
Dima написал:
На Windows с этим проблем не было.. т.е. всё отображалось нормально как в MySQL так и в PHP файла...
На Linux проблема с кодировками..Подскажите пожалуйста какие должны быть кодировки php файлов,и БД MySQL .. Думал повторить как на Windows но корректно выводится текст с БД или текст в PHP...

Вступление:
При миграции с винды я просто перенес и базы и скрипты простым копированием.


1. При создании базы можно указать кодировку
2. При генерации страницы в метатеге необходимо указать правильную кодировку
3. Еще вроде средствами апача можно заставить насильно отдавать страницы в определенной кодировки, но врят ли у вас такая настройка "активирована"

Соответственно вна должна быть все равно какая, но везде одинаковая.

Итак: как создавали БД?

#12391

При создании базы данных выбираю:
1.Сравнение - cp1251_general_ci
2.Сопоставление соединения с MySQL:cp1251_general_ci

PHP файл кодировка WINDOWS-1251 (только что через gedit создавал)

В PHP кирилица нормально отображается,в таблицах БД тоже читабельно ,а вот если выводить с данных с БД в окно браузера через PHP тогда "??????"

#12393
Dima написал:
При создании базы данных выбираю:

Саму базу скриптом создавали?
Заглянуть бы в скрипт. Хотябы: начало скрипта; команда создания таблицы имеющей текстовые поля. И одну строку вставки данных....

#12394

нет я через phpMyAdmin...

вот код выборки из базы..

text

<?PHP
if ($db = mysql_connect("localhost","root","")) {

mysql_select_db("w",$db); } else {

echo mysql_error(); exit; }

$result = mysql_query("SELECT * from df",$db); $row = mysql_fetch_array($result);

do {

echo $row['aaa']."<br><br>";

} while ($row = mysql_fetch_array($result));

?>

извиняюсь за название бд,таблиц и полей )) я для теста создавал)

#12395
Dima написал:
нет я через phpMyAdmin...
....
извиняюсь за название бд,таблиц и полей )) я для теста создавал)

Сделайте в phpMyAdmin экспорт всей базы в скрипт (она ж пока маленькая?) и покажите

#12396

вот :)

text
-- phpMyAdmin SQL Dump
-- version 3.2.5
-- http://www.phpmyadmin.net
--
-- РҐРѕСЃС‚: localhost
-- Время создания: Мар 11 2010 г., 19:00
-- Версия сервера: 5.0.51
-- Версия PHP: 5.2.6-1+lenny6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */;

-- -- База данных: `phptest` --

-- --------------------------------------------------------

-- -- Структура таблицы `quotes` --

CREATE TABLE IF NOT EXISTS `quotes` ( `id` int(11) NOT NULL auto_increment, `date` datetime NOT NULL, `login` varchar(11) NOT NULL, `rating` int(11) NOT NULL, `text` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;

-- -- Дамп данных таблицы `quotes` --

INSERT INTO `quotes` (`id`, `date`, `login`, `rating`, `text`) VALUES (1, '2010-03-08 02:27:00', 'admin', 2, 'Привет!\r\nКак дела?');

-- --------------------------------------------------------

-- -- Структура таблицы `users` --

CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL auto_increment, `date` int(11) NOT NULL, `login` int(11) NOT NULL, `name` int(11) NOT NULL, `password` int(11) NOT NULL, `mail` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ;

-- -- Дамп данных таблицы `users` --

INSERT INTO `users` (`id`, `date`, `login`, `name`, `password`, `mail`) VALUES (1, 0, 0, 0, 0, 0), (2, 0, 0, 0, 0, 0);

Скрипта нет,просто вывод и ввод данных =) Я только учусь )Как выводил данные можно посмотреть выше =)

#12426

В php-файле можете добавить такую конструкцию:

text

<html>
<head>
 <META http-equiv="content-type" content="text/html; charset=WINDOWS-1251">
</head>
</html>

Все данные будут отображаться в ср1251 кодировке. Я обычно в конце скриптиков добавляю =)

#12428
elve написал:

Все данные будут отображаться в ср1251 кодировке. Я обычно в конце скриптиков добавляю =)

Как я понял текст из скриптов выводится нормально, корежится только взятый из БД....

ЗЫ блин у меня такое было, как решил хоть убей не вспомню..........

#12441
elve написал:
Все данные будут отображаться в ср1251 кодировке. Я обычно в конце скриптиков добавляю

не помагает..делал так..

voral написал:
Как я понял текст из скриптов выводится нормально, корежится только взятый из БД....

да-да,Вы правы.

#12877

читал-читал.. там написано то что вы и говорили..кодировки php и таблиц MySQL должны совпадать :|

Ура! Разобрался... всё перекодировал в utf8 перед запросом к БД прописывал

text
mysql_query("SET NAMES 'UTF8'");

только теперь возник не большой вопрос..Стоит ли писать с исп.кодировки UTF-8 ? Так как на Windows я использ. cp1251

#13150

совет забудьте про cp1251 как страшный сон...

#13152
komcumir написал:
совет забудьте про cp1251 как страшный сон...

с удовольствием :) интересно узнать почему?

#13175

Чтобы не было совместимости с другой частью мира

#13357

one_man_showdc в смысле? значит лучше всё таки cp-1251? :|

Войдите или зарегистрируйтесь, чтобы ответить.