проблем с encoding при insert на поле

vasilev

Registered
здравейте .
имам следния проблем - използвам тази - http://php-login-script.com/ система с малка преработка .
всички таблици са ми utf_general_ci , искам да се запише дадено поле на български . като се отвори mysettings.php виждаме следното :

Код:
foreach($_POST as $key => $value) {
	$data[$key] = filter($value);
}


mysql_query("UPDATE users SET
			`full_name` = '$data[name]',
			`address` = '$data[address]',
			`tel` = '$data[tel]',
			`avatar` = '$data[avatar]',
			`country` = '$data[country]',
			`website` = '$data[web]'
			 WHERE id='$_SESSION[user_id]'
			") ;
mysql_query("SET NAMES 'UTF8'") 
or die(mysql_error());

като съм добавил това set names utf8 за да изпраща символите в Utf8 формат . хубаво но не става .. като променям на латиница е ок - променя се , но ако променя на кирилица си изкарва че полетата са записани но връща старите които съм променил на латиница .

моля за хелп :)
 
не можах да разбера точно какъв е проблема ама ако искаш да нямаш проблеми с колациите прави си полетата на utf8_unicode_ci :)
 
проблема е че не може да запиша поле което е на български :)
.. промених всички полета да са unicode_ci но същата работа .
ако полетата са с символи на латиница е ок , но на кирилица не .

махнах mysql_query("SET NAMES 'UTF8'") за да видя какво ще даде и ми изписва :

Incorrect string value: '\x82Ð...' for column 'full_name' at row 1

Въвел съм "тест" в това поле .. ако това ви помогне :)
 
Направи всичко в phpmyadmin на utf8 и utf8_unicode_ci, а в сайта в конфик файла сложи

Код:
mysql_query("SET CHARACTER SET cp1251");
mysql_query('set names cp1251');
 
Код:
<?php
header("Content-type: text/html;charset=utf-8");
?>

Сложи това в началото на всички страници.
 
пак не става маменцето му !

да не би пък да е проблем с базата .. но какъв да е като се записва като е латиница ..
всички полета са ми varchar(255) , това да не би да е проблем
 
1. Колацията на базата данни да е utf8_general_ci (сменяш я от началната страница на phpmyadmin).

2. Чарсета на всички таблици да е utf8_general_ci.
3. Слагаш в конфигурационния файл (важно да е преди всички заявки):

Код:
mysql_query('SET NAMES UTF8');
mysql_query('SET CHARACTER UTF8');

4. Променяш енкодинга на всички файлове да е UTF-8 и пишеш в тях:

Код:
header("Content-type: text/html;charset=utf-8");

както е написал gamena007.
 
направил съм всичко .
когато енкодинга е преди заявката :

Код:
	mysql_query('SET NAMES UTF8');
mysql_query('SET CHARACTER UTF8');
mysql_query("UPDATE users SET
         `full_name` = '$data[name]',
         `address` = '$data[address]',
         `tel` = '$data[tel]',
         `avatar` = '$data[avatar]',
         `country` = '$data[country]',
         `website` = '$data[web]'
          WHERE id='$_SESSION[user_id]'
         ")
or die(mysql_error());


- Incorrect string value: '\x84Ð...' for column 'full_name' at row 1

когато е след заявката :


Код:
mysql_query("UPDATE users SET
         `full_name` = '$data[name]',
         `address` = '$data[address]',
         `tel` = '$data[tel]',
         `avatar` = '$data[avatar]',
         `country` = '$data[country]',
         `website` = '$data[web]'
          WHERE id='$_SESSION[user_id]'
         ") ;
mysql_query('SET NAMES UTF8');
mysql_query('SET CHARACTER UTF8')
or die(mysql_error());


- You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UTF8' at line 1


.. това е първия ред

Код:
<?php header("Content-type: text/html;charset=utf-8"); ?>
 
Код:
mysql_query('SET CHARACTER SET UTF8');

Така е правилната заявка. Грешката е моя.

И сетваш това в my.ini:

Код:
default-character-set=utf8
character_set_server=utf8
 

Back
Горе