MySql 4.1 и utf-8

Luda

Guest
MySql 4.1 и utf-8

Проблема с кодировками при записи в базу данных, SET NAMES 'utf-8' не помогает.
Если вносить данные через MyAdmin все в порядке, при записи в базу из скрипта (обычный insert, русские буквы), в базе мусор.
В настройках Mysql и apache все charsets прописаны как utf-8.
Отладочные записи показывают, что до запроса все нормально, запрос отправляется в нужной кодировке, тем не менее каким-то образом в базе получается мусор.
Php 4.3.11
Mysql 4.1
apache 1.3.33
Верхний топик в этой теме читала. Не помогло. Мануал читала.
Что еще можно сделать?
 

si

Administrator
PHP:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf8"> 
</head>
<body>
<?php
	error_reporting(E_ALL);
	
	$host = ':/tmp/mysql41.sock';
	$user = '';
	$password = '';
	$dbname = 'test';
	
	if ( !($db = @mysql_connect($host,$user,$password)) ) {
			echo "Can not connect to DB server ($host), MySQL Error: ".mysql_error();;
			exit;
	}
	
	if ( !@mysql_select_db($dbname,$db) ){
		echo "Can not select DB: $dbname, MySQL Error: ".mysql_error();
		exit;
	}
	
	$sql = array(
		"set names utf8",
		"set character set utf8",
		"drop table if exists c2",
		"create table c2 ( str varchar(100) ) CHARACTER SET utf8",
		"insert into c2 VALUES('мама мыла раму')", // В UTF8 !!!
		"select * from c2"
	);
	
	foreach ($sql as $s){
		echo "SQL: $s<br/>\n";
		
		$res = mysql_query($s,$db);
		
		if (!$res){
			echo "MySQL error: ".mysql_error().':'.mysql_errno()."<br>\n";
			exit;
		}
		
		if (strpos($s,"select")===0)
		{
			echo "Result: <br/><pre>\n";
			while( $row = mysql_fetch_array($res,MYSQL_ASSOC) ){
				print_r($row);
				
			}	
			echo "</pre>\n";
		}
	}
?>
</body>
</html>
это должно работать
 

Luda

Guest
Не помогло в базе
&#208;?&#208;°&#208;&#184;&#208;&#188;&#208;µ&#208;&#189;&#208;&#190;&#208;&#178;&#208;°&#208;&#189;&#208;&#184;&#208;µ

-~{}~ 17.05.05 11:55:

Не помогло в базе
это ответ striimii
 

si

Administrator
вот еще скрипт который надо в 1251 сохранить
PHP:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=winodws-1251"> 
</head>
<body>
<?php
	error_reporting(E_ALL);
	
	$host = ':/tmp/mysql41.sock';
	$user = '';
	$password = '';
	$dbname = 'test';
	
	if ( !($db = @mysql_connect($host,$user,$password)) ) {
			echo "Can not connect to DB server ($host), MySQL Error: ".mysql_error();;
			exit;
	}
	
	if ( !@mysql_select_db($dbname,$db) ){
		echo "Can not select DB: $dbname, MySQL Error: ".mysql_error();
		exit;
	}
	
	$sql = array(
		"set names cp1251",
		"set character set cp1251",
		"insert into c2 VALUES('мама мыла windows')", // В cp1251 !!!
		"select * from c2"
	);
	
	foreach ($sql as $s){
		echo "SQL: $s<br/>\n";
		
		$res = mysql_query($s,$db);
		
		if (!$res){
			echo "MySQL error: ".mysql_error().':'.mysql_errno()."<br>\n";
			exit;
		}
		
		if (strpos($s,"select")===0)
		{
			echo "Result: <br/><pre>\n";
			while( $row = mysql_fetch_array($res,MYSQL_ASSOC) ){
				print_r($row);
				
			}	
			echo "</pre>\n";
		}
	}
?>
</body>
</html>
-~{}~ 17.05.05 11:05:

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

Luda

Guest
si первый скрипт работает, спасибо все корректно
я когда таблицы создавала CHARACTER SET utf8 не указывала, наверное надо пересобрать базу
 

Luda

Guest
Спасибо большое все работает , с русскими буквами (там потом будет еще 5 языков, надеюсь корректно)
 
Сверху