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

  • Автор темы Автор темы proWoke
  • Дата начала Дата начала

proWoke

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

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

-~{}~ 18.08.10 21:30:

Да забыл. ОС: Ubuntu 10.04
 
И не найдешь. Потому что в линуксах он называется my.cnf.

И - (внимание, сюрприз!!) для настройки кодировок он нафиг не нужен.
 
ну где в линуксе по дефолту поставить кодировку базы? Чтобы не latin было а utf-8, просто постоянно в запросе указывать кодировку неудобно же.
 
а как ты ее "указываешь постоянно в запросе" ?

http://php.net/manual/en/function.mysql-set-charset.php
 
ну если нет phpmyadmin где это делается визуально и интуитивно понятно, можно после выбора базы данных типа
mysql_select_db($db);
указывать строку
mysql_query("SET NAMES utf8");
ну и конечно же для общего развития пачитать и узнать как можно поднастроить подобные вопросы непосредственно на сервере
http://www.linux.by/wiki/index.php/FAQ_PHP_MySQL_charset
 
указывать строку
mysql_query("SET NAMES utf8");
Не надо. Надо почитать по ссылке, которую я дал, и увидеть, что SET NAMES - not recommended.
Потому что решает только часть проблемы с кодировками.
 
Автор оригинала: флоппик
а как ты ее "указываешь постоянно в запросе" ?

http://php.net/manual/en/function.mysql-set-charset.php
Да я в общем, если в начале каждого своего скрипта это указывать, то не удобно же будет.
А вообще у меня phpmyadmin и там везде я ставлю utf8, в браузере тоже utf8, те браузеру от пхп посылается utf8. А всё равно выводит русские нормально, а вот в самой базе отображаются криво. Все мануалы, которые в этом разделе, как то не совсем подходят под мою проблему. Или я как всегда, всё неправильно понял.
 
а как ты смотришь "в самой базе" ?
бинарные файлы с данными смотришь, что ли?
 
Ну я ставлю везде в phpmyadmin кодировку utf8. В таблицЕ, в базе. В php.ini у меня utf8 стоит. Ну как бы я этим руководствуюсь. Как понял из прочитанного. Что в базу идёт одна кодировка, база должны знать в какой принимать. Ну вроде я и поставил везде одну. Логика такая.
 
секундочку
а mysql_connect у тебя тоже в каждом скрипте?
 
Я тренируюсь. Пишу гостевуху. По модели MVC. В файле model.php у меня библиотека функций. И там да, часто вызывается функция mysql_connect.
 
Ну так что тебе мешает в той функции, где у тебя mysql_connect рядом вставить [m]mysql_set_charset[/m] или, если libmysqlclient древняя, выполнение set names ?
 
Я с 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"
 
Автор оригинала: Вурдалак
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, ...). Тогда вопросов по кодировкам не останется.
 
Кстати, столкнулся с кодировкой параметров в хранимых процедурах.
Они как-бы не задаются в 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 :)
 
Сверху