|
|
|
| У меня проблема с кодировкой когда я перенашу данные из БД на html страничку. Вместо русских букв иероглифы. Пожалуйста подскажите как мне настроить правильно кодировку или намекните где это можно прочитать. Мне это очень срочно нужно! Заранее всем спасибо кто откликнится!!! | |
|
|
|
|
|
|
|
для: Сквиртел13
(31.05.2006 в 15:55)
| | А в базе данных, данные как выглядит? | |
|
|
|
|
|
|
|
для: kadet_73
(31.05.2006 в 16:39)
| | В бд они выглядят нормально | |
|
|
|
|
|
|
|
для: Сквиртел13
(31.05.2006 в 18:26)
| | Вопрос некорректен.
В БД данные умеют только лежать. Либо уже искаженными либо еще нет.
Выглядеть в БД они не умеют. Храниться они там могут, а выглядеть - нет.
Выглядеть они могут только в одном из клиентов.
Клиент - это своего рода окошко, через которое можно писать данные и читать (т.е. глядеть на) их.
Так вот, чтобы данные выглядели нормально, их надо читать и писать с одинаковыми настройками клиентов. Поскольку пишите Вы их через консоль (а таблица консоли ище с ДОСовых времен была cp866) а читаете в эксплорере, а он обычно настроен на cp1251,
то данные записанные таким образом всегда будут выглядеть в html искаженными, как бы Вы не пытались что-то настроить. | |
|
|
|
|
|
|
|
для: Trianon
(31.05.2006 в 18:37)
| | И как же решить эту проблему? Мне же надо данные как то выводить на html страничку | |
|
|
|
|
|
|
|
для: Сквиртел13
(31.05.2006 в 18:45)
| | Вводите данные со своей же html-странички.
Тогда они будут выводиться нормально.
Или как вариант, работайте через phpMyAdmin, указав там, 1251 в качестве рабочей кодовой страницы.
Впрочем я Вам это уже советовал. | |
|
|
|
|
|
|
|
для: Trianon
(31.05.2006 в 18:49)
| | А как вводить данные со своей html странички.
А на счет phpMyAdmin я помню что Вы советовали, но мне надо научиться сначало так делать. | |
|
|
|
|
|
|
|
для: Сквиртел13
(31.05.2006 в 18:55)
| | какая у Вас структура таблицы, и что туда нужно вводить?
проще на примере показать. | |
|
|
|
|
|
|
|
для: Trianon
(31.05.2006 в 18:58)
| | Любая таблица с любыми данными. Мне просто нужно понять сам смысл как это делается, а дальше я сама. | |
|
|
|
|
|
|
|
для: Сквиртел13
(31.05.2006 в 19:02)
| | Вот тот минимум, который я смог придумать.
<?
include 'config.inc.php';
$self = $_SERVER['PHP_SELF'];
$table = 'adr'; // имя таблицы
if (0) {}
else if(isset($_REQUEST['update']) ) // если запрос на обновление записи
{
$name=$_REQUEST['name'];
$msg=$_REQUEST['msg'];
if(get_magic_quotes_gpc())
{
$name = stripslashes($name);
$msg = stripslashes($msg);
}
$id = intval($_REQUEST['update']);
$name = mysql_escape_string($name);
$msg = mysql_escape_string($msg);
$sql = "UPDATE $table SET name='$name', msg = '$msg' WHERE id = $id";
if(!($res = mysql_query($sql)))
exit("Error in $sql : <br>". mysql_error());
if(!mysql_affected_rows())
exit("No record (id = $id)");
echo "Record $id succesfully updated<br>\r\n";
}
else if(isset($_REQUEST['insert']) ) // если запрос на добавление записи
{
$name=$_REQUEST['name'];
$msg=$_REQUEST['msg'];
if(get_magic_quotes_gpc())
{
$name = stripslashes($name);
$msg = stripslashes($msg);
}
$name = mysql_escape_string($name);
$msg = mysql_escape_string($msg);
$sql = "INSERT INTO $table (name,msg) VALUES ('$name','$msg')";
if(!($res = mysql_query($sql)))
exit("Error in $sql : <br>". mysql_error());
$id = mysql_insert_id();
echo "Record succesfully inserted with id = $id<br>\r\n";
}
else if(isset($_REQUEST['delete']) ) // если запрос на удаление записей
{
$del = $_REQUEST['delete'];
if(is_array($del))
foreach($del as $k => $v) $del[$k] = intval($v);
else
$del = array(intval($del));
$del = implode(',',$del);
$sql = "DELETE FROM $table WHERE id IN ($del)";
if(!($res = mysql_query($sql)))
exit("Error in $sql : <br>". mysql_error());
$num = mysql_affected_rows();
echo "$num record(s) deleted: $del<br>\r\n";
}else if(isset($_REQUEST['edit']) ) // если запрос на редактирование строки
{
$id = intval($_REQUEST['edit']);
$sql = "SELECT * FROM $table WHERE id = $id";
if(!($res = mysql_query($sql)))
exit("Error in $sql : <br>". mysql_error());
if(!($row = mysql_fetch_assoc($res)))
exit("No record (id = $id)");
{ // формируем запрос на обновление записи
?>
<table border=1><form action=<?=$self?> method=post>
<tr><td> id </td>
<input type=hidden name=update value=<?= $row['id']?> >
<td><?= $row['id']?></td></tr>
<tr><td> Name </td><td>
<input size=5 name=name value=<?=
'"'.htmlspecialchars($row['name']).'"';?> ></td></tr>
<tr><td> Message </td><td>
<input size=60 name=msg value=<?=
'"'.htmlspecialchars($row['msg']).'"';?> ></td></tr>
<tr><td> </td><td>
<input type=submit value=Update></td></tr>
</form></table>
<?
exit();
}
}
//---- вывод таблицы ---- общая часть
{
$sql = "SELECT * FROM $table";
if(!($res = mysql_query($sql)))
exit("Error in $sql : <br>". mysql_error());
{ ?>
<table border=1><form method=post><tr>
<td> </td>
<td> id </td>
<td> Name </td>
<td> Message </td>
</tr>
<?
}
while($row = mysql_fetch_assoc($res))
{
?>
<tr>
<td>
<input type=checkbox name=delete[] value=<?= $row['id']?> >
</td>
<td><a href=?edit=<?= $row['id']?> alt=edit ><?= $row['id']?> </a>
</td>
<td><?=
'"'.htmlspecialchars($row['name']).'"';?> </td>
<td><?=
'"'.htmlspecialchars($row['msg']).'"';?> </td>
</tr>
<?
}
{
?>
<tr><td colspan=4>
<input type =submit value='delete selected rows'>
</td></tr>
</form></table> <hr>
Insert new record there:<br>
<table border=1><form method=post>
<tr><td> Name </td><td>
<input size=5 name=name ></td></tr>
<tr><td> Message </td><td>
<input size=60 name=msg ></td></tr>
<tr><td> </td><td>
<input type=submit name=insert value=insert ></td></tr>
</form></table>
<?
}
}
?>
|
Таблица создается так:
CREATE TABLE adr (
id int(11) NOT NULL auto_increment,
name varchar(20) default NULL,
msg tinytext,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
|
| |
|
|
|
|
|
|
|
для: Trianon
(31.05.2006 в 21:03)
| | в 44 строке помоему ошибка.
вместо
exit("Error in $sql : <br>". mysql_query());
|
надо
exit("Error in $sql : <br>". mysql_error());
|
но это не важно конечно.... важно следующее.
С английскими буквами скрипт работает отлично. Но если вводить русские слова, то ошибка опять:
Error in INSERT INTO adr (name,msg) VALUES ('sdf','фыва') :
Data too long for column 'msg' at row 1
|
| |
|
|
|
|
|
|
|
для: noob
(31.05.2006 в 21:43)
| | Насчет mysql_query() - спасибо, я исправил. Там было штук пять таких.
А что касается русского, то виноват не скрипт . Все настройки соединения выполняются в конфиг-файле:
У меня там ничего необычного нет. Только
mysql_connect($server, $user, $password);
mysql_select_db($database);
Естественно с проверкой ошибок.
Даже пресловутые
// mysql_query ("set character_set_client='cp1251'");
// mysql_query ("set character_set_results='cp1251'");
// mysql_query ("set collation_connection='cp1251_general_ci'");
и то закомментарены.
Единственное, что, вероятно, играет роль, так это то, что $user у меня не равно 'root'
Рутовый пользователь в некоторых версиях MySQL требует настройки кодовой таблицы.
Скрипт абсолютно рабочий, я проверил все ветки. | |
|
|
|
|
|
|
|
для: Trianon
(31.05.2006 в 22:09)
| | а никто не спорит что у тебя он рабочий) проблема как раз в том что у нас(почему то мне кажется что у сквиртел13 то же самое будет) не работает). и мы не знаем че делать.. :( | |
|
|
|
|
|
|
|
для: Trianon
(31.05.2006 в 21:03)
| | Спасибо за пример. Я сейчас его попробую. | |
|
|
|
|
|
|
|
для: Сквиртел13
(31.05.2006 в 15:55)
| | тут много раз писали что надо mysql_query("set names 'cp1251';") сделать.
а ты как данные в бд записывал? через пхп? | |
|
|
|
|
|
|
|
для: noob
(31.05.2006 в 16:45)
| | Я записывалА данные:
сначала создавала таблицу в консоле а потом через PHP выводила их на страницу | |
|
|
|
|
|
|
|
для: Сквиртел13
(31.05.2006 в 18:28)
| | а что появляется если записать через php? русский текст записать. | |
|
|
|
|
|
|
|
для: noob
(31.05.2006 в 18:37)
| | Я не поняла. Как русский текст записать через php& | |
|
|
|
|
|
|
|
для: Сквиртел13
(31.05.2006 в 18:47)
| | ну так же как через консоль, только через пхп.
mysql_query("INSERT ........");
|
| |
|
|
|
|
|
|
|
для: noob
(31.05.2006 в 18:49)
| | Я новичок и поэтому еще всего не знаю.
Я в консоле создала таблицу с данными, потом написала скрипт и вывела эти данные в html страничку. Они вывелись но русские буквы заменились иероглифами. Как по другому вывести данные из таблицы я пока не знаю. Может ты подскажешь? | |
|
|
|
|
|
|
|
для: Сквиртел13
(31.05.2006 в 18:52)
| | просто у меня такая же хрень =)
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=18286&page=1 | |
|
|
|
|
|
|
|
для: noob
(31.05.2006 в 19:06)
| | Понятно)) Давай так как найдешь ответ сообщи мне я тоже когда найду обязательно сообщу!))) | |
|
|
|