Показать полную графическую версию : [решено] кодировка utf8 для базы
dima1981
03-08-2008, 18:40
настроил mysql в настройках программы т.е. не вручную на кодировку utf8 , черная табличка теперь не проскакивает как раньше когда настраивал таки образом на ср1251 и все нормально прописываю пароль далее велком, создаю базу, затем в ней две таблицы все супер, только начинаю занасить в них данные русскими буквами, показывает сразу такую строку
eror 1366(HYOOO): incorrect string value: '\x19\XA0\XAC\XA0\XE0\XA0' for column 'cityo' at row1, что это может означать, может кодировка компьютера не подходит, для базы? уменя виста стартер и она самая минифункциональная
dima1981
03-08-2008, 20:17
Тема двигается my.ini выглядит теперь так
[mysql]
default-character-set=utf8
[mysqld]
character-set-server = utf8
collation-server = utf8_unicode_ci
character-sets-dir=C:\Program Files\MySQL\MySQL Server 6.0\share\charsets
default-character-set=utf8
к этому перед тем как заносить данные на русском в базу прописываю mysql>SET NAMES CP1251
и данные загружаются и норма, только вот в файл выводить не пробывал, может и радоваться не чему )
кстати хоть таблица и настроенна на utf8, прописываешь перед загрузкой mysql>SET NAMES utf8 возникает как раньше
eror 1366(HYOOO): incorrect string value: '\x19\XA0\XAC\XA0\XE0\XA0' for column 'cityo' at row1
dima1981
03-08-2008, 21:50
не двигается тема рановато для радости
ввывожу таблицу
<?php
$db = mysql_connect("localhost","root","123");
mysql_select_db("per" ,$db);
$sql = mysql_query("SELECT * FROM pe" ,$db);
echo ("<table border ='1'>");
echo ("<tr><td>Адрес</td><td>Описание</td></tr>");
while ($tablerows = mysql_fetch_row($sql))
{
echo("<tr><td>$tablerows[2]</td></tr> ");
}
echo "</table>";
mysql_close($db);
?>
выводит в браузер вопросы, только цифры нормально показываются и может кто знает автоматическая кодировка в браузере переключается на турецкую?
dima1981,
а <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> прописали?
Delirium
04-08-2008, 02:56
Можно еще так попробовать.
<meta http-equiv="Content-Type" content="text/html; charset=WINDOWS-1251" />
И еще, во избежание проблем НИКОГДА не пишите запросы в виде:
"SELECT * FROM pe" »
Пишите всегда полностью
select address, descr from pe
dima1981
04-08-2008, 08:40
хорошо, только куда прописывать <meta http-equiv="Content-Type" content="text/html; charset=WINDOWS-1251" /> » и что значит address »
? сейчас установил кодировку koi8r, прописываю "SELECT * FROM pe" » и нормально вроде.
Понимаю так к примеру есть форма на странице в нее вносится информация нажимается кнопка "submit",
затем данные action-ом передаются какому то скрипту php, который устанавливает соединение с mysql предоставив ей пароль, имя, сервер,
потом этот скрипт указывает мусклу в какой кодировке станет вносить данные например koi8r и данные нормально записываются и хранятся до того как к ним сделается запрос скриптом php который установит соединение, обозначит кодировку для мускула в которой извлекает данные koi8r, делает это и передает эти данные на страницу сайта,
при этом сам мускул настроен до того как к нем обращаются указываяя в какой кодировке собераются производить дальнейшие действия находится в latin1.
или все совсем не так, тогда пожалуйста скажите хоть кто то, как настроить мускл чтоб загружать в него данные на русском языке, потом извлечь данные соответствующие запрсу поиска на html страницу?
Delirium
04-08-2008, 09:09
dima1981, мне кажется, вам надо сначала почитать документацию про принципы работы web-приложений, прежде чем писать такие проекты. Не в обиду.
Едем дальше:
хорошо, только куда прописывать »
это прописывается в HTML файл (или PHP).
Цитата Delirium:"SELECT * FROM pe" »
и нормально вродна ее. »
Нормально до тех пор, пока вы не добавите в эту таблицу еще поле, и еще одно, и еще одно. Для корректной работы SQL запроса рекомендуется не писать знак *, а перечислять поля в нужном порядке.
Вы для начала научитесь отправлять, сохранять и возвращать значения хотя бы на англ. языке, а потом уже будете мучиться с локализацией.
vadimiron
04-08-2008, 13:04
$db = mysql_connect("localhost","root","123");
mysql_select_db("per" ,$db); »
Так ты не делаешь
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
сразу после mysql_connect()
То есть попробуй так:
$db = mysql_connect("localhost","root","123");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
mysql_select_db("per" ,$db);
$sql = mysql_query("SELECT * FROM pe" ,$db);
echo ("<table border ='1'>");
echo ("<tr><td>Адрес</td><td>Описание</td></tr>");
while ($tablerows = mysql_fetch_row($sql))
{
echo("<tr><td>$tablerows[2]</td></tr> ");
}
echo "</table>";
mysql_close($db);
Получается???
dima1981
04-08-2008, 15:51
vadimiron, спасибо за код сейчас новую базу создаю как создастся коректно отпишусь.
Delirium, рекомендуется не писать знак *, а перечислять поля в нужном порядке. »
как выглядит перечисление полей в нужном порядке, со скобками, апострофами или как или к мануалу?
кстати какой формат таблиц выбрать MyISAM или InnoDB который поновее?
Delirium
05-08-2008, 01:14
как выглядит перечисление полей в нужном порядке, со скобками, апострофами или как или к мануалу »
можно в кавычках, можно без. Можно и так:
select FirstCess, SecondCell, address from your_table
где FirstCess, SecondCell, address - названия твоих полей в таблице. sql.ru (http://www.sql.ru) тебе может помочь в этом.
Про формат таблиц ничего не скажу, не работал плотно с mysql.
dima1981
05-08-2008, 01:38
понял Delirium, спасибо, теперь далее, если настраиваю мускул в binary весь, то что тут такого?
что то так сделал заношу данные на рус-ом в базе отображаются нормально,
теперь я могу совершать выборку всей таблицы например в кодировке ср1251 или там utf8 указывая set names utf8 например ?
кстати my.ini теперь выглядит так:
[mysql]
default-character-set=binary
# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
[mysqld]
# The TCP/IP Port the MySQL Server will listen on
port=3306
#Path to installation directory. All paths are usually resolved relative to this.
basedir="C:/Program Files/MySQL/MySQL Server 6.0/"
#Path to the database root
datadir="C:/ProgramData/MySQL/MySQL Server 6.0/Data/"
# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=binary
# The default storage engine that will be used when create new tables when
default-storage-engine=INNODB
как вы считаете тут все нормально?
теперь совсем даже вопросов не выводит, может все из за INNODB, потому что пример с сайта на который там ссылку оставлял http://www.lissyara.su/?id=1655 »
,
там когда показываются свойства таблицы то внизу указано ENGINE=MyISAM тогда как у меня ENGINE=INNODB
Delirium
05-08-2008, 03:59
Если все работает, открывает, сохраняет, обрабатывает - то пусть работает и по барабану какой у него ENGINE, главное - результат.
dima1981
05-08-2008, 09:48
и по барабану какой у него ENGINE » вот вот только принцип работы хочу узнать, к примеру не важно в какой кодировке получается настроен мускул, важно что база, таблицав и данные которые в него заносятся находятся в одной кодировке и извлекаются они в этой самой кодировке в которой храняться, так получается или нет,
так что то теперь все работает только вот работающий скрипт php раздобыть не могу который бы всю базу извлекал на страницу, когда он у меня появится тогда и станет ясно на сколько нынешний подход с binary эфективен.
не работал плотно с mysql. » как тогда данные содержите в упорядоченном виде или нет такой потребности?
Delirium
05-08-2008, 09:53
важно чтоб база, таблицав какой и данные которые в него заносятся и вкакой находятся в одной кодировке и извлекаются они в этой самой кодировке в которой храняться, так получается или нет, »
Н И Ф И Г А не понятно, прошу прощения. Вы можете писать, разделяя слова, буквы и ставя знаки препинания? Работающий скрипт вам предложил еще vadimiron в 8 посте.
dima1981
05-08-2008, 10:10
мог бы ставил бы, ставлю как могу и вы простите мне мою неграмотность.
этот скрипт что то не срабатывает при той кодировке которая тогда была когда vadimiron разместил этот скрипт, срабатывало теперь нет, да и с форматированием он, но нужен такой, который выводит данные, например из базы rr, таблицы pp как есть без <tr> и < td>
dima1981
05-08-2008, 11:02
кто может подсказать, подскажите пожалуйста где хранятся базы и что делать если нету на диске C папки ProgrammData?
Delirium
05-08-2008, 17:03
нужен такой, который выводит данные, например из базы rr, таблицы pp как есть без <tr> и < td> »
dima1981, вы меня извините конечно, но сдается мне вы абсолютно не врубаетесь в том что пишете. tr и td - теги html, необходимые для отображения текста в таблице, а запрос вы пишете на php языке. Еще раз настоятельно рекомендую почитать литературу по html и php + mysql - в инете ее вагон.
dima1981
05-08-2008, 20:13
спасибо Delirium, за рекомендации, да не врубаюсь.
если бы я прочитал такое сообщение то понял бы, единственное уточнил бы чтоб наверняка убедиться,
вывести данные как есть, значит не размещая их в таблицу штмл? на что получил бы ответ, если бы у того кто писал это осталась потребность в решение такой задачи, да и тогда если знаю решение и есть время и желание и т.д. и т.п. напишу за пару минут этот скрипт, уверен там в нем от силы пять строк, хотя можно и в одну,
этот скрипт мне для тестирования нужен и только, когда увижу что данные нормально выводятся из таблицы и все здорово настроено,
тогда естественно возьмусь за подробное чтение инфы по данному вопросу,
если например у меня с настройками базы не то что то то про пхп могу хоть обчитаться но толку не будет.
пойду за скриптом, если не окажиться в интернете такого, вернусь обязательно так и так вернусь и не важно хотите вы меня видеть или нет тут, вы лучше сразу скажите об этом тогда свалю и баста, то то разговоры какие то пошли такими темпами скоро начнется "курсивом надо печатать, цифры буквами и тому подобное" с обычной темой всего навсего обратился
dima1981
06-08-2008, 00:44
Посмотрите пожалуйста код, запарился я совсем
<?php
$db = mysql_connect("localhost","root","123");
mysql_query("SET NAMES 'cp1251'");
mysql_query("SET CHARACTER SET 'cp1251'");
mysql_select_db("test" ,$db);
$sql = mysql_query("SELECT * FROM I" ,$db);
echo ("<table border ='1'>");
echo ("<tr><td>Адрес</td><td>Описание</td></tr>");
while ($tablerows = mysql_fetch_row($sql))
{
echo("<tr><td><a href='$tablerows[1]'>$tablerows[1]</a></td><td>$tablerows[2]</td></tr> ");
}
echo "</table>";
mysql_close($db);
?>
таблица в кодировке binary
данные заносились в кодировке cp1251
показывает Fatal error: Call to undefined function mysql_connect() in C:\apache\localhost\www\1.php on line 2
апач 2.2.9 мускул 6.0 php5
до этого этот код выводил данные только тогда кодировка была utf8, но это браузер не про кодировку же говорит?
Delirium
06-08-2008, 01:30
но это браузер не про кодировку же говорит? »
Нет, говорится что произошел вызов неизвестной функции mysql_connect().
ернусь обязательно так и так вернусь и не важно хотите вы меня видеть или нет тут, вы лучше сразу скажите об этом тогда свалю и баста »
Не нервничайте :yes: Мы всегда рады помочь, если понимаем, что написано :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.