Kokoc
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Xttx Цитата: Страница в кодировке Windows. При выводе информации из базы (UTF-8) в текстовое поле, комманда SET NAMES CP1251 помогла. И всё читаемо. Однако, при попытке ВВЕСТИ эту информацию ОБРАТНО В БАЗУ, уже в базе получаються вопросы, со знаками препинания. | Т.е. записываешь, сразу читаешь в той же странице, в той же ее кодировке 1251 - и вопросы/квадраты? И откуда знаешь, что в базе "квадраты", а не правильные символы. Чем (в чём) смотришь? Для каждого клиента (и страницы html/php) нужно давать SET NAMES исходя из той кодировки, в которой он работает (напр. для консольного win-клиента mysql.exe это 'set names cp866', для unix-клиента будет "set names koi8r"). Посмотри также скрипты - может, у тебя где-то закрывается mysql_close(), а потом снова mysql_connect(), но далее запросы без предварительного "set names". Вот мой рабочий скрипт (index.php): Код: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><title>Test</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <? $link = mysql_connect("localhost","root",""); mysql_select_db("test"); mysql_query("SET NAMES UTF8"); if($_SERVER['REQUEST_METHOD'] === 'POST') { print "ID=".$_POST['ID'].", name=".$_POST['NAME']."</p>"; $id = intval($_POST['ID']); if($id>0) { $name = $_POST['NAME']; $query="INSERT INTO foo (id,name) VALUES (".$id.",'".$name."')"; mysql_query($query); } } // end if ?> <form method="POST" action="index.php"> <input type="text" name="ID"><BR> <input type="text" name="NAME"> <input type="submit"> </form> <table border="1"> <? $res = mysql_query("SELECT * FROM foo"); while($data = mysql_fetch_assoc($res)) { print "<tr><td>".$data['id']."</td><td>".$data['name']."</td></tr>\n"; } mysql_close($link); ?> </table></body></html> | И создание базы данных: Код: CREATE DATABASE test DEFAULT CHARACTER SET UTF8; USE test; CREATE TABLE foo (id int, name varchar(100)) DEFAULT CHARACTER SET UTF8; |
|