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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] кодировка utf8 для базы (http://forum.oszone.net/showthread.php?t=113053)

dima1981 03-08-2008 18:40 867065

кодировка utf8 для базы
 
настроил 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 867104

Тема двигается 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 867151

не двигается тема рановато для радости

ввывожу таблицу

<?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);
?>
выводит в браузер вопросы, только цифры нормально показываются и может кто знает автоматическая кодировка в браузере переключается на турецкую?

mar 04-08-2008 02:16 867252

dima1981,
а
PHP код:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

прописали?

Delirium 04-08-2008 02:56 867263

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

<meta http-equiv="Content-Type" content="text/html; charset=WINDOWS-1251" />
И еще, во избежание проблем НИКОГДА не пишите запросы в виде:
Цитата:

Цитата dima1981
"SELECT * FROM pe" »

Пишите всегда полностью
Код:

select address, descr from pe

dima1981 04-08-2008 08:40 867324

хорошо, только куда прописывать
Цитата:

Цитата Delirium
<meta http-equiv="Content-Type" content="text/html; charset=WINDOWS-1251" /> »

и что значит
Цитата:

Цитата Delirium
address »

? сейчас установил кодировку koi8r, прописываю
Цитата:

Цитата Delirium
"SELECT * FROM pe" »

и нормально вроде.
Понимаю так к примеру есть форма на странице в нее вносится информация нажимается кнопка "submit",
затем данные action-ом передаются какому то скрипту php, который устанавливает соединение с mysql предоставив ей пароль, имя, сервер,
потом этот скрипт указывает мусклу в какой кодировке станет вносить данные например koi8r и данные нормально записываются и хранятся до того как к ним сделается запрос скриптом php который установит соединение, обозначит кодировку для мускула в которой извлекает данные koi8r, делает это и передает эти данные на страницу сайта,
при этом сам мускул настроен до того как к нем обращаются указываяя в какой кодировке собераются производить дальнейшие действия находится в latin1.

или все совсем не так, тогда пожалуйста скажите хоть кто то, как настроить мускл чтоб загружать в него данные на русском языке, потом извлечь данные соответствующие запрсу поиска на html страницу?

Delirium 04-08-2008 09:09 867344

dima1981, мне кажется, вам надо сначала почитать документацию про принципы работы web-приложений, прежде чем писать такие проекты. Не в обиду.
Едем дальше:
Цитата:

Цитата dima1981
хорошо, только куда прописывать »

это прописывается в HTML файл (или PHP).
Цитата:

Цитата dima1981
Цитата Delirium:"SELECT * FROM pe" »
и нормально вродна ее. »

Нормально до тех пор, пока вы не добавите в эту таблицу еще поле, и еще одно, и еще одно. Для корректной работы SQL запроса рекомендуется не писать знак *, а перечислять поля в нужном порядке.
Вы для начала научитесь отправлять, сохранять и возвращать значения хотя бы на англ. языке, а потом уже будете мучиться с локализацией.

vadimiron 04-08-2008 13:04 867500

Цитата:

Цитата dima1981
$db = mysql_connect("localhost","root","123");
mysql_select_db("per" ,$db); »

Так ты не делаешь
PHP код:

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'"); 

сразу после mysql_connect()

То есть попробуй так:
PHP код:

$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 867670

vadimiron, спасибо за код сейчас новую базу создаю как создастся коректно отпишусь.
Delirium,
Цитата:

Цитата Delirium
рекомендуется не писать знак *, а перечислять поля в нужном порядке. »

как выглядит перечисление полей в нужном порядке, со скобками, апострофами или как или к мануалу?

кстати какой формат таблиц выбрать MyISAM или InnoDB который поновее?

Delirium 05-08-2008 01:14 868019

Цитата:

Цитата dima1981
как выглядит перечисление полей в нужном порядке, со скобками, апострофами или как или к мануалу »

можно в кавычках, можно без. Можно и так:
Код:

select FirstCess, SecondCell, address from your_table
где FirstCess, SecondCell, address - названия твоих полей в таблице. sql.ru тебе может помочь в этом.
Про формат таблиц ничего не скажу, не работал плотно с mysql.

dima1981 05-08-2008 01:38 868026

понял 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, потому что пример с сайта на который там ссылку оставлял
Цитата:

Цитата dima1981
http://www.lissyara.su/?id=1655 »

,
там когда показываются свойства таблицы то внизу указано ENGINE=MyISAM тогда как у меня ENGINE=INNODB

Delirium 05-08-2008 03:59 868046

Если все работает, открывает, сохраняет, обрабатывает - то пусть работает и по барабану какой у него ENGINE, главное - результат.

dima1981 05-08-2008 09:48 868199

Цитата:

Цитата Delirium
и по барабану какой у него ENGINE »

вот вот только принцип работы хочу узнать, к примеру не важно в какой кодировке получается настроен мускул, важно что база, таблицав и данные которые в него заносятся находятся в одной кодировке и извлекаются они в этой самой кодировке в которой храняться, так получается или нет,
так что то теперь все работает только вот работающий скрипт php раздобыть не могу который бы всю базу извлекал на страницу, когда он у меня появится тогда и станет ясно на сколько нынешний подход с binary эфективен.

Цитата:

Цитата Delirium
не работал плотно с mysql. »

как тогда данные содержите в упорядоченном виде или нет такой потребности?

Delirium 05-08-2008 09:53 868203

Цитата:

Цитата dima1981
важно чтоб база, таблицав какой и данные которые в него заносятся и вкакой находятся в одной кодировке и извлекаются они в этой самой кодировке в которой храняться, так получается или нет, »

Н И Ф И Г А не понятно, прошу прощения. Вы можете писать, разделяя слова, буквы и ставя знаки препинания? Работающий скрипт вам предложил еще vadimiron в 8 посте.

dima1981 05-08-2008 10:10 868222

мог бы ставил бы, ставлю как могу и вы простите мне мою неграмотность.
этот скрипт что то не срабатывает при той кодировке которая тогда была когда vadimiron разместил этот скрипт, срабатывало теперь нет, да и с форматированием он, но нужен такой, который выводит данные, например из базы rr, таблицы pp как есть без <tr> и < td>

dima1981 05-08-2008 11:02 868282

кто может подсказать, подскажите пожалуйста где хранятся базы и что делать если нету на диске C папки ProgrammData?

Delirium 05-08-2008 17:03 868658

Цитата:

Цитата dima1981
нужен такой, который выводит данные, например из базы rr, таблицы pp как есть без <tr> и < td> »

dima1981, вы меня извините конечно, но сдается мне вы абсолютно не врубаетесь в том что пишете. tr и td - теги html, необходимые для отображения текста в таблице, а запрос вы пишете на php языке. Еще раз настоятельно рекомендую почитать литературу по html и php + mysql - в инете ее вагон.

dima1981 05-08-2008 20:13 868800

спасибо Delirium, за рекомендации, да не врубаюсь.
если бы я прочитал такое сообщение то понял бы, единственное уточнил бы чтоб наверняка убедиться,
вывести данные как есть, значит не размещая их в таблицу штмл? на что получил бы ответ, если бы у того кто писал это осталась потребность в решение такой задачи, да и тогда если знаю решение и есть время и желание и т.д. и т.п. напишу за пару минут этот скрипт, уверен там в нем от силы пять строк, хотя можно и в одну,

этот скрипт мне для тестирования нужен и только, когда увижу что данные нормально выводятся из таблицы и все здорово настроено,
тогда естественно возьмусь за подробное чтение инфы по данному вопросу,
если например у меня с настройками базы не то что то то про пхп могу хоть обчитаться но толку не будет.
пойду за скриптом, если не окажиться в интернете такого, вернусь обязательно так и так вернусь и не важно хотите вы меня видеть или нет тут, вы лучше сразу скажите об этом тогда свалю и баста, то то разговоры какие то пошли такими темпами скоро начнется "курсивом надо печатать, цифры буквами и тому подобное" с обычной темой всего навсего обратился

dima1981 06-08-2008 00:44 869022

Посмотрите пожалуйста код, запарился я совсем

<?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 869040

Цитата:

Цитата dima1981
но это браузер не про кодировку же говорит? »

Нет, говорится что произошел вызов неизвестной функции mysql_connect().

Цитата:

Цитата dima1981
ернусь обязательно так и так вернусь и не важно хотите вы меня видеть или нет тут, вы лучше сразу скажите об этом тогда свалю и баста »

Не нервничайте :yes: Мы всегда рады помочь, если понимаем, что написано :)

dima1981 06-08-2008 01:38 869048

идет, спасибо вам. буду с функциями разбераться )

с какой строки он начинает отсчет с этой <?php ?

что то у меня и тест мускула с рнр не срабатывает...онлаине 5

Delirium 06-08-2008 01:54 869054

да, ругается на строку
Код:

$db = mysql_connect("localhost","root","123");

dima1981 06-08-2008 02:09 869064

повидимому с ней что то не так, захожу в мускл из меню пуск, набераю пароль 123, мне в ответ велком, набераю юзе тест,
потом селект * фром I
потом хорошо появляется таблица.

прошу прощение за транслит, бахнул стандартный переключатель сегодня теперь с пунтом а тут переключать, настоящий атас, уверен понимаете

в другом файле он либо на эту строку
mysql_free_result($listOfDbs);?>
либо на эту
$noOfDbs = 0;
зависит от того штмл теги считаются, такие как штмл и боди например, если считаются то первая строка, если не считаются то вторая.
вообщем ничего не понимаю ...

Delirium 06-08-2008 02:16 869066

у вас точно PHP корректно настроен? Потому что говорится не о ошибке в подключении, а о том, что сама функция неизвестна, т.е. интерпретатор ее не понимает. Хотя функция написана верно.

dima1981 06-08-2008 02:31 869069

функцию пшп инфо отображает хорошо, таблица как в учебнике появляется

может чего там не раскоментированно, но вроде как рнр был установлен сразу, так и есть к нему в настройки и не захожу практически т.е. совсем не захожу, получается не с того не с сего это началось в смысле онлине показывать со вчерашнего или сегодняшнего дня, не могу и представить что здесь может быть

Delirium 06-08-2008 02:44 869070

Создайте такую php страницу

PHP код:

<?php
mysql_query
("SET NAMES 'cp1251'"); 

mysql_query("SET CHARACTER SET 'cp1251'");

echo (
"<table border ='1'>"); 

echo (
"<tr><td>Адрес</td><td>Описание</td></tr>"); 


echo 
"</table>"

?>

Корректно отобразит таблицу? Если да, то php-теги воспринимаются. Надо искать причину в другом. Если не отображает - проблемы в настройке PHP.

dima1981 06-08-2008 02:50 869072

да т.е. не коректно, онлине 2

кстати может из за настроек таблицы там первые шесть пунктов бинарные и один последний ютф8, но там нормально отображаются символы.

сейчас как раз по яндексу начал лазить на счет настроек рнр, в целом безрезультатно, продолжу пойду потихоньку, потому что действительно не понятная ситуация какая то

Delirium 06-08-2008 02:55 869074

Цитата:

Цитата dima1981
кстати может из за настроек таблицы »

Вряд ли, т.к. мы к бд еще не подключались. Уберите строки
mysql_query("SET NAMES 'cp1251'");
mysql_query("SET CHARACTER SET 'cp1251'");
из кода и оставьте только строки с echo - отобразит таблицу?

dima1981 06-08-2008 03:07 869077

да отоброжает адрес описание

не линкуется, да?

Delirium 06-08-2008 03:29 869082

значит php воспринимает. Надо смотреть настройки php сервера(APACHE стоит, я так понимаю), почему он не коннектит.

dima1981 06-08-2008 03:43 869089

2.2.9 apache спасибо огромное Delirium, пойду с апаче разбераться, сегодня только установил, только даже с чего начинать не знаю рнр показывается, мускул нет,скорее всего думаю в конфе, что то, до этого апач был из связки 2055, но этот с заграницы скачан там у них и штппд разные полазию посмотрю в яндексе, так то вообщем устанавливал в соответствии с инструкциями но кто знает...

dima1981 06-08-2008 05:17 869108

готово. )
это все из за невнимательности, огромное вам спасибо, респект и уважуха!!! )

и данные стали выводиться на английском четко, но вот с русским не важно, но это поправимо и думаю цветочки посравнению с тем, что было )

Delirium 06-08-2008 05:21 869109

Рад, что смог помочь :)

dima1981 07-08-2008 05:36 869956

и все таки не могу понять,вот vadimiron говорит везде устанавливать кодировку utf8 так, устанавливаю при стандартной настройке эту кодировку, все хорошо т.е. велком, корректирую настройки set names 'cp1251', создаю таблицу
CREATE TABLE tabl ( ...............)DEFAULT CHARSET cp1251;, начинаю инсертить часть данных с русскими буквами, часть с английскими в неё, все супер сохраняются в базе отоброжаются чудно, и на страницу выводятся, только английский алфавит видно отлично, но русский какие то закорючки ничего не могу понять, что тут сделать порекомендуете?
заранее спасибо.

dima1981 09-08-2008 09:23 871591

захожу в мускул по умолчанию настроен на latin1,
набераю set names cp866;,
создаю базу CREATE DATABASE ddd;
создаю таблицу CREATE TABLE tabl2 (im varchar(20), em text)DEFAULT CHARSET cp1251;
заполняю таблицу
INSERT INTO tabl2
(im, em)
values
("Имя","123@123.com")
набераю set names cp1251;,
выполняю скрипт
<?php
$db = mysql_connect("localhost","root","123");
mysql_select_db("ddd" ,$db);
mysql_query("SET NAMES 'cp866'");
mysql_query("SET CHARACTER SET 'cp1251'");
$sql = mysql_query("SELECT * FROM tabl2" ,$db);
echo ("<table border ='1'>");
echo ("<tr><td>Имя</td><td>Адрес</td></tr>");
while ($tablerows = mysql_fetch_row($sql))
{
echo("<tr><td>$tablerows[1]</td><td>$tablerows[2]</td></tr>");
}
echo "</table>";
mysql_close($db);
?>

на windows так, потому, что с кодировками не важно обстоит


Время: 19:42.

Время: 19:42.
© OSzone.net 2001-