|
|
|
| Здравствуйте.
Решил перевести свой проект с win1251 на utf8, но пока не получается очень простая вещь:
Есть таблица:
CREATE TABLE `test` (
`pole` varchar(255) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
И код для тестирования:
<?php
$hostname = "localhost";
$user = "root";
$password = "";
$db = "test";
define("DEBUG", true);
mysql_connect($hostname, $user, $password);
mysql_select_db ($db);
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
mysql_query ("SET NAMES 'utf8'");
if(isset($_POST['send'])){
$pole=$_POST['pole1'];
$q="INSERT INTO test SET pole='$pole'";
echo $q."<br>";
mysql_query($q) or die(mysql_error());
}
$q="SELECT * FROM test";
$res=mysql_query($q) or die(mysql_error());
while($row=mysql_fetch_array($res)){
echo $row[0]." ";
}
?>
<br>
<form method=post>
<input type="text" name="pole1" value="<?=$pole?>">
<input type="submit" name="send" value="ok">
</form>
|
У меня почему-то в базу попадает не сам символ , а его код (например для O с черточкой вверху; - Õ ;).
Ничего не пойму - смотрел даже через консоль mysql - там та же картина.
Может я неправильно символ выбрал для тестирования:) | |
|
|
|
|
|
|
|
для: Hamilion
(30.05.2008 в 18:08)
| |
<?php
header ('Content-type: text/html; charset=utf-8');
...
?>
|
| |
|
|
|
|
|
|
|
для: Root
(31.05.2008 в 17:11)
| | А, будет работать если я вместо этого напишу в head
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
| |
|
|
|
|
|
|
|
для: Hamilion
(02.06.2008 в 12:11)
| | А зачем такое писать в head? | |
|
|
|
|
|
|
|
для: Hamilion
(30.05.2008 в 18:08)
| | Как верно заметили, Вы не сообщили браузеру, что это документ в UTF-8. По умолчанию обычно в наших браузерах кодировка windows-1251, и все символы, которые в ней (windows-1251) не содержатся, преобразуются браузером при отправке данных формы вот в такую кашу. | |
|
|
|