ищу файл у себя на компьютере

proWoke

Новичок
ищу файл у себя на компьютере

В общем столкнулся ща с проблемой кодировок и mysql и выводом в браузер. Читаю с сайта инструкцию и всякое по ссылкам. Там написанно исправить кодировку в my.ini. Так я этот файл не могу найти на компе у себя. Php.ini естб а my.ini не могу найти. Не могу всё с кодировками до сих пор разобраться (позор). У меня из формы занносит данные в базу, там они отображаются криво, а выводит всё правильно. Помогите разобраться, где этот файл то. Поиском ищу, по папками лазаю, не могу найти, где установить дефолтную кодировку базы. 2 день уже. Из за этой кодировки у меня депрессия начинатся, хнык:(.

-~{}~ 18.08.10 21:30:

Да забыл. ОС: Ubuntu 10.04
 

флоппик

promotor fidei
Команда форума
Партнер клуба
И не найдешь. Потому что в линуксах он называется my.cnf.

И - (внимание, сюрприз!!) для настройки кодировок он нафиг не нужен.
 

proWoke

Новичок
ну где в линуксе по дефолту поставить кодировку базы? Чтобы не latin было а utf-8, просто постоянно в запросе указывать кодировку неудобно же.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
а как ты ее "указываешь постоянно в запросе" ?

http://php.net/manual/en/function.mysql-set-charset.php
 

Lakr

Новичок
ну если нет phpmyadmin где это делается визуально и интуитивно понятно, можно после выбора базы данных типа
mysql_select_db($db);
указывать строку
mysql_query("SET NAMES utf8");
ну и конечно же для общего развития пачитать и узнать как можно поднастроить подобные вопросы непосредственно на сервере
http://www.linux.by/wiki/index.php/FAQ_PHP_MySQL_charset
 

флоппик

promotor fidei
Команда форума
Партнер клуба
указывать строку
mysql_query("SET NAMES utf8");
Не надо. Надо почитать по ссылке, которую я дал, и увидеть, что SET NAMES - not recommended.
Потому что решает только часть проблемы с кодировками.
 

proWoke

Новичок
Автор оригинала: флоппик
а как ты ее "указываешь постоянно в запросе" ?

http://php.net/manual/en/function.mysql-set-charset.php
Да я в общем, если в начале каждого своего скрипта это указывать, то не удобно же будет.
А вообще у меня phpmyadmin и там везде я ставлю utf8, в браузере тоже utf8, те браузеру от пхп посылается utf8. А всё равно выводит русские нормально, а вот в самой базе отображаются криво. Все мануалы, которые в этом разделе, как то не совсем подходят под мою проблему. Или я как всегда, всё неправильно понял.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
а как ты смотришь "в самой базе" ?
бинарные файлы с данными смотришь, что ли?
 

proWoke

Новичок
Ну я ставлю везде в phpmyadmin кодировку utf8. В таблицЕ, в базе. В php.ini у меня utf8 стоит. Ну как бы я этим руководствуюсь. Как понял из прочитанного. Что в базу идёт одна кодировка, база должны знать в какой принимать. Ну вроде я и поставил везде одну. Логика такая.
 

fixxxer

К.О.
Партнер клуба
секундочку
а mysql_connect у тебя тоже в каждом скрипте?
 

proWoke

Новичок
Я тренируюсь. Пишу гостевуху. По модели MVC. В файле model.php у меня библиотека функций. И там да, часто вызывается функция mysql_connect.
 

fixxxer

К.О.
Партнер клуба
Ну так что тебе мешает в той функции, где у тебя mysql_connect рядом вставить [m]mysql_set_charset[/m] или, если libmysqlclient древняя, выполнение set names ?
 

proWoke

Новичок
Я с mysql_query перепутал. Ну я вставляю после mysql_connect. И в итоге у меня начинаеют в браузер вопросики выводиться, а в таблице в каждом поле всё равно latin_swedish стоит. Вот мой код соединения с mysql:
Код:
function connect_bd ($host, $user, $pass, $dbname) { // Функция соединения и выбора базы данных
mysql_connect ($host, $user, $pass);
mysql_set_charset  ("utf8") or die ("error: " .mysql_error());
mysql_query("CREATE DATABASE $dbname");
mysql_select_db ($dbname);
}
-~{}~ 21.08.10 21:08:

В php.ini по дефолту стоит utf-8
Код:
; PHP's default character set is set to empty.
; http://php.net/default-charset
default_charset = "utf-8"
 

proWoke

Новичок
Автор оригинала: Вурдалак
http://phpfaq.ru/charset#repair
Спасибо. Всё настроил так, как нужно. Но это ведь решает лишь частный случай. И если я удалю базу, то снова надо делать эти шаманские вещи с дампом, через терминал. А нет такого решения, чтобы все базы и таблицы создавались в utf8 и не париться?
 

Вурдалак

Продвинутый новичок
http://dev.mysql.com/doc/refman/5.0/en/charset-server.html
The server character set and collation are used as default values if the database character set and collation are not specified in CREATE DATABASE statements. They have no other purpose.
http://dev.mysql.com/doc/refman/5.0/en/charset-database.html
The database character set and collation are used as default values for table definitions if the table character set and collation are not specified in CREATE TABLE statements. The database character set also is used by LOAD DATA INFILE. The character set and collation have no other purposes.
http://dev.mysql.com/doc/refman/5.0/en/charset-table.html
The table character set and collation are used as default values for column definitions if the column character set and collation are not specified in individual column definitions.
Ну и советую разобраться что есть charset (utf8, cp1251, ...), а что — collation (utf8_general_ci, utf8_unicode_ci, cp1251_general_ci, ...). Тогда вопросов по кодировкам не останется.
 

dimagolov

Новичок
Кстати, столкнулся с кодировкой параметров в хранимых процедурах.
Они как-бы не задаются в CREATE PROCEDURE / CREATE FUNCTION / TRIGGER и, как можно было бы догадаться, используется дефолтное из базы. То есть при передаче параметров в процедуру они преобразовывются из той кодировки в которой пришли в кодировку базы.

А теперь вопрос. Если мы изменим кодировку базы, то что случиться с кодировкой параметров хранимок? Как оказалось, ответ различен для различных версий MySQL. На 5.0.51 кодировка параметров автоматом изменилась, а вот на 5.1.33 она сохранилась "оригинальная", а дампе перед и после CREATE PROCEDURE / FUNCTION / TRIGGER появились ALTER DATABASE ... CHARACTER SET=oldEnc/newEnc; соответственно.

Так что, keep in mind :)
 
Сверху