utf8 versus cp1251

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
voider
лейтенант
Сообщения: 830
Зарегистрирован: 2008-02-21 20:35:03
Откуда: msk

utf8 versus cp1251

Непрочитанное сообщение voider » 2009-01-31 13:56:14

значит такая беда у меня насерваке стоят настройки ниже.

---- Файл my.cnf

Код: Выделить всё

[client]
# Для местного клиента
default-character-set=cp1251
....

[mysqld]
# Для всего сервера
default-character-set=cp1251
....

но я захотел сделать кодировку utf8
как сделать ,чтоб для каждого сайта виртуального хостинга были свои настройки для клиента

пример ставлю vbullку в ut8 а она мне вопросики :) я должен поменять
в файле
my.cnf

Код: Выделить всё

[client]
# Для местного клиента
default-character-set=utf8
? не будет ли это влиять на другие сайты, где используеться предыдущая схема см.выше и ка клучше я вот хочу перейти только на ut8 навсегда ,чтоб не париться ,чтоб могли китайцы свои ироглифы оставлять или там испанцы :))

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: utf8 versus cp1251

Непрочитанное сообщение zg » 2009-01-31 14:02:04

по дефолту никак, только для системных пользователей через ~/my.cnf. Лучше пусть каждый скрипт сам решает в какой кодировке он будет работать через

Код: Выделить всё

SET names 'charset';

Аватара пользователя
voider
лейтенант
Сообщения: 830
Зарегистрирован: 2008-02-21 20:35:03
Откуда: msk

Re: utf8 versus cp1251

Непрочитанное сообщение voider » 2009-01-31 14:26:54

дело втом где я в булетене это в пишу?

Аватара пользователя
Volodymyr
лейтенант
Сообщения: 614
Зарегистрирован: 2008-06-17 16:04:56
Откуда: Ukraine, Lviv
Контактная информация:

Re: utf8 versus cp1251

Непрочитанное сообщение Volodymyr » 2009-01-31 14:30:51

voider писал(а):дело втом где я в булетене это в пишу?
В любой системе ищите такое:

Код: Выделить всё

mysql_connect(HOST, USER_DB, PASS_DB);
mysql_select_db(DB);
Єто соедениение с сервером БД и выбор базы для роботы. Вот после него вписывате.

Код: Выделить всё

mysql_query("SET NAMES $charset");

Аватара пользователя
voider
лейтенант
Сообщения: 830
Зарегистрирован: 2008-02-21 20:35:03
Откуда: msk

Re: utf8 versus cp1251

Непрочитанное сообщение voider » 2009-01-31 14:47:26

Код: Выделить всё

mysql_query("SET NAMES $charset");
ну это же времмено? я перезапущю сервак и все собъеться тогда что?

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: utf8 versus cp1251

Непрочитанное сообщение zg » 2009-01-31 14:50:23

voider писал(а):ну это же времмено?
нет, это будет срабатывать каждый раз, когда будет срабатывать скрипт, надо только добавить это в скрипт.
voider писал(а):я перезапущю сервак и все собъеться тогда что?
не собьётся, даже если скрипт перенести на другой сервер.

Аватара пользователя
Volodymyr
лейтенант
Сообщения: 614
Зарегистрирован: 2008-06-17 16:04:56
Откуда: Ukraine, Lviv
Контактная информация:

Re: utf8 versus cp1251

Непрочитанное сообщение Volodymyr » 2009-01-31 14:51:21

Єто о надо код РНР добавить.

Аватара пользователя
voider
лейтенант
Сообщения: 830
Зарегистрирован: 2008-02-21 20:35:03
Откуда: msk

Re: utf8 versus cp1251

Непрочитанное сообщение voider » 2009-01-31 15:12:01

кажись я нашел эту строчку в class_core.php

Код: Выделить всё

	function connect($database, $w_servername, $w_port, $w_username, $w_password, $w_usepconnect = false, $r_servername = '', $r_port = 3306, $r_username = '', $r_password = '', $r_usepconnect = false, $configfile = '', $charset = '')
там ничего не записано? наверно она откудато берет эти данные :) из по умолчание чтоли? :)

Аватара пользователя
voider
лейтенант
Сообщения: 830
Зарегистрирован: 2008-02-21 20:35:03
Откуда: msk

Re: utf8 versus cp1251

Непрочитанное сообщение voider » 2009-01-31 15:14:56

странно что там 2 строчки вот еще одна

Код: Выделить всё

function db_connect($servername, $port, $username, $password, $usepconnect, $configfile = '', $charset = '')

Аватара пользователя
voider
лейтенант
Сообщения: 830
Зарегистрирован: 2008-02-21 20:35:03
Откуда: msk

Re: utf8 versus cp1251

Непрочитанное сообщение voider » 2009-01-31 15:22:10

все я понял нижняя длая мускул лайт :) верхню юзаюзаю и скажу получилось или нет :)

Аватара пользователя
voider
лейтенант
Сообщения: 830
Зарегистрирован: 2008-02-21 20:35:03
Откуда: msk

Re: utf8 versus cp1251

Непрочитанное сообщение voider » 2009-01-31 16:13:10

блин неполучаетсьязахожу в пхп майадмин вот что пишет

Код: Выделить всё

script varchar(50) cp1251_general_ci  Нет                 
  action varchar(25) cp1251_general_ci  Нет                 
  optionname varchar(100) cp1251_general_ci 
я уже зло й :evil: :-o

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: utf8 versus cp1251

Непрочитанное сообщение zg » 2009-01-31 16:31:31

voider писал(а):я уже зло й
это структура таблицы, чтобы её изнемнить надо пересоздать таблицу

Аватара пользователя
voider
лейтенант
Сообщения: 830
Зарегистрирован: 2008-02-21 20:35:03
Откуда: msk

Re: utf8 versus cp1251

Непрочитанное сообщение voider » 2009-01-31 17:10:16

это структура таблицы, чтобы её изнемнить надо пересоздать таблицу
а изменить нельзя ? :))

кароче я когда создавал вордпресс то там п умолчанию utf8 а у булки походу cp1251 че делать не знаю

вот кусок из этой фигни
куда вот добавить нужную строчку?

Код: Выделить всё

class vB_Database
{
	/**
	* Array of function names, mapping a simple name to the RDBMS specific function name
	*
	* @var	array
	*/
	var $functions = array(
		'connect'            => 'mysql_connect',
		'pconnect'           => 'mysql_pconnect',
		'select_db'          => 'mysql_select_db',
		'query'              => 'mysql_query',
		'query_unbuffered'   => 'mysql_unbuffered_query',
		'fetch_row'          => 'mysql_fetch_row',
		'fetch_array'        => 'mysql_fetch_array',
		'fetch_field'        => 'mysql_fetch_field',
		'free_result'        => 'mysql_free_result',
		'data_seek'          => 'mysql_data_seek',
		'error'              => 'mysql_error',
		'errno'              => 'mysql_errno',
		'affected_rows'      => 'mysql_affected_rows',
		'num_rows'           => 'mysql_num_rows',
		'num_fields'         => 'mysql_num_fields',
		'field_name'         => 'mysql_field_name',
		'insert_id'          => 'mysql_insert_id',
		'escape_string'      => 'mysql_escape_string',
		'real_escape_string' => 'mysql_real_escape_string',
		'close'              => 'mysql_close',
		'client_encoding'    => 'mysql_client_encoding',
	);

	/**
	* The vBulletin registry object
	*
	* @var	vB_Registry
	*/
	var $registry = null;

	/**
	* Array of constants for use in fetch_array
	*
	* @var	array
	*/
	var $fetchtypes = array(
		DBARRAY_NUM   => MYSQL_NUM,
		DBARRAY_ASSOC => MYSQL_ASSOC,
		DBARRAY_BOTH  => MYSQL_BOTH
	);

	/**
	* Full name of the system
	*
	* @var	string
	*/
	var $appname = 'vBulletin';

	/**
	* Short name of the system
	*
	* @var	string
	*/
	var $appshortname = 'vBulletin';

	/**
	* Database name
	*
	* @var	string
	*/
	var $database = null;

	/**
	* Link variable. The connection to the master/write server.
	*
	* @var	string
	*/
	var $connection_master = null;

	/**
	* Link variable. The connection to the slave/read server(s).
	*
	* @var	string
	*/
	var $connection_slave = null;

	/**
	* Link variable. The connection last used.
	*
	* @var	string
	*/
	var $connection_recent = null;

	/**
	* Whether or not we will be using different connections for read and write queries
	*
	* @var	boolean
	*/
	var $multiserver = false;

	/**
	* Array of queries to be executed when the script shuts down
	*
	* @var	array
	*/
	var $shutdownqueries = array();

	/**
	* The contents of the most recent SQL query string.
	*
	* @var	string
	*/
	var $sql = '';

	/**
	* Whether or not to show and halt on database errors
	*
	* @var	boolean
	*/
	var $reporterror = true;

	/**
	* The text of the most recent database error message
	*
	* @var	string
	*/
	var $error = '';

	/**
	* The error number of the most recent database error message
	*
	* @var	integer
	*/
	var $errno = '';

	/**
	* SQL Query String
	*
	* @var	integer	The maximum size of query string permitted by the master server
	*/
	var $maxpacket = 0;

	/**
	* Track lock status of tables. True if a table lock has been issued
	*
	* @var	bool
	*/
	var $locked = false;

	/**
	* Number of queries executed
	*
	* @var	integer	The number of SQL queries run by the system
	*/
	var $querycount = 0;

	/**
	* Constructor. If x_real_escape_string() is available, switches to use that
	* function over x_escape_string().
	*
	* @param	vB_Registry	Registry object
	*/
	function vB_Database(&$registry)
	{
		if (is_object($registry))
		{
			$this->registry =& $registry;
		}
		else
		{
			trigger_error("vB_Database::Registry object is not an object", E_USER_ERROR);
		}
	}

Код: Выделить всё

	*/
	function connect($database, $w_servername, $w_port, $w_username, $w_password, $w_usepconnect = false, $r_servername = '', $r_port = 3306, $r_username = '', $r_password = '', $r_usepconnect = false, $configfile = '', $charset = 'utf-8')
	{
		$this->database = $database;

		$w_port = $w_port ? $w_port : 3306;
		$r_port = $r_port ? $r_port : 3306;

		$this->connection_master = $this->db_connect($w_servername, $w_port, $w_username, $w_password, $w_usepconnect, $configfile, $charset);
		$this->multiserver = false;
		$this->connection_slave =& $this->connection_master;

		if ($this->connection_master)
		{
			$this->select_db($this->database);
		}
	}

Аватара пользователя
voider
лейтенант
Сообщения: 830
Зарегистрирован: 2008-02-21 20:35:03
Откуда: msk

Re: utf8 versus cp1251

Непрочитанное сообщение voider » 2009-01-31 18:20:14

вот уменя чего в системе
может ктоньть вразумин ою бошку я ваще запутался :)

Код: Выделить всё

basedir /usr/local/mysql-5.0.22-freebsd6.0-i386/ 
binlog cache size 32,768 
bulk insert buffer size 8,388,608 
character set client utf8 
(Global value) cp1251 
character set connection utf8 
(Global value) cp1251 
character set database cp1251 
character set filesystem binary 
character set results utf8 
(Global value) cp1251 
character set server cp1251 
character set system utf8 
character sets dir /usr/local/mysql-5.0.22-freebsd6.0-i386/share/mysql/charsets/ 
collation connection utf8_unicode_ci 
(Global value) cp1251_general_ci 
collation database cp1251_general_ci 

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: utf8 versus cp1251

Непрочитанное сообщение zg » 2009-01-31 18:53:47

данные хранятся в 1251, а поступают к клиенту в UTF-8

Аватара пользователя
voider
лейтенант
Сообщения: 830
Зарегистрирован: 2008-02-21 20:35:03
Откуда: msk

Re: utf8 versus cp1251

Непрочитанное сообщение voider » 2009-01-31 19:17:38

ура решил проблему всего лишь

вместо

Код: Выделить всё

[client]# Для местного клиента default-character-set=cp1251
....
[mysqld]# Для всего сервера default-character-set=cp1251

вписал

Код: Выделить всё

[client]# Для местного клиентаdefault-character-set=utf8
....
[mysqld]# Для всего сервера default-character-set=utf8 

Аватара пользователя
voider
лейтенант
Сообщения: 830
Зарегистрирован: 2008-02-21 20:35:03
Откуда: msk

Re: utf8 versus cp1251

Непрочитанное сообщение voider » 2009-01-31 19:20:35

zg писал(а):данные хранятся в 1251, а поступают к клиенту в UTF-8
я как раз это и понял под конец мучений :)
вот как изменилось ,но одно не могу понять

Код: Выделить всё

collation connection utf8_unicode_ci 
(Глобальное значение) utf8_general_ci 
несвоместимы совсем как хотелось бы ,но работает :)

Код: Выделить всё

character set client utf8 
character set connection utf8 
character set database utf8 
character set filesystem binary 
character set results utf8 
character set server utf8 
character set system utf8 
character sets dir /usr/local/mysql-5.0.22-freebsd6.0-i386/share/mysql/charsets/ 
collation connection utf8_unicode_ci 
(Глобальное значение) utf8_general_ci 
collation database utf8_general_ci 
collation server utf8_general_ci 

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: utf8 versus cp1251

Непрочитанное сообщение zg » 2009-01-31 19:38:29

voider писал(а):utf8_unicode_ci
тебе надо генерал

Аватара пользователя
voider
лейтенант
Сообщения: 830
Зарегистрирован: 2008-02-21 20:35:03
Откуда: msk

Re: utf8 versus cp1251

Непрочитанное сообщение voider » 2009-01-31 20:04:45

я нашел как не меняя настройки сервера получить тоже самое ,но в другой кодировке но мне нужно было utf8


как вирант могу предложить джедайский способ правка файла init.php в папке includes
Находишь вот такую строчку
PHP код:

Код: Выделить всё

// make $db a member of $vbulletin  
это примерно 183-185 строчка, НАД этим добовляешь
PHP код:

Код: Выделить всё

mysql_query ("set character_set_client='cp1251'");  
mysql_query ("set character_set_results='cp1251'");  
mysql_query ("set collation_connection='cp1251_general_ci'"); 

Аватара пользователя
voider
лейтенант
Сообщения: 830
Зарегистрирован: 2008-02-21 20:35:03
Откуда: msk

Re: utf8 versus cp1251

Непрочитанное сообщение voider » 2009-01-31 20:14:53

2 zg пасибо ,что навел на мысли :)

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: utf8 versus cp1251

Непрочитанное сообщение zg » 2009-01-31 20:35:23

всё таки рекомендую ознакомится с мануалом и проработать вопрос с кодировками

Аватара пользователя
voider
лейтенант
Сообщения: 830
Зарегистрирован: 2008-02-21 20:35:03
Откуда: msk

Re: utf8 versus cp1251

Непрочитанное сообщение voider » 2009-01-31 20:51:22

дая как параллейно и читал мануал :)
http://www.lissyara.su/?id=1655

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: utf8 versus cp1251

Непрочитанное сообщение zg » 2009-01-31 21:37:09

это заметка, но не мануал -))) мануал тут http://dev.mysql.com/doc/refman/5.1/en/charset.html

Аватара пользователя
voider
лейтенант
Сообщения: 830
Зарегистрирован: 2008-02-21 20:35:03
Откуда: msk

Re: utf8 versus cp1251

Непрочитанное сообщение voider » 2009-01-31 22:03:51

многа букавок ,да и пока ни к чему раз разобрался :) вот ябы прочитал возможно ли в мускуле многомерные таблицы создавать я слышал врде что низя :) в постгри мона :)

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: utf8 versus cp1251

Непрочитанное сообщение zg » 2009-01-31 23:17:20

voider писал(а):возможно ли в мускуле многомерные таблицы создавать
это кто и зачем их создавать на уровне мускула?
voider писал(а):раз разобрался
-))))