Tenho uma tabela que possui entre outros campos númericos, varchars dessa forma descritos:
| id_imovel | int(10) unsigned | NULL | NO | PRI | NULL | auto_increment
| nome | varchar(255) | utf8_unicode_ci | NO | | |
| endereco | varchar(255) | utf8_unicode_ci | NO | | |
Meu banco está assim:
mysql> show create database db_respeito;
+-------------+----------------------------------------------------------------------+
| Database | Create Database |
+-------------+----------------------------------------------------------------------+
| db_respeito | CREATE DATABASE `db_respeito` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+-------------+----------------------------------------------------------------------+
1 row in set (0.00 sec)
Se eu entrar no terminal e inserir algo como:
insert into tb_imoveis values (NULL, 'Açaí do João', 'Atrás do Sótão',2,2)
+--------------+-----------+
| nome | id_imovel |
+--------------+-----------+
| Açaí do João | 1858 |
+--------------+-----------+
Porém caso eu insira pelo php com algo como
$query = "insert into tb_imoveis values (NULL, 'Açaí do João', 'Atrás do Sótão',3,3)";
$resultado = insereBD($query);
e depois consulte pelo terminal aparecem problemas de acentuação
+--------------+-----------+
| nome | id_imovel |
+--------------+-----------+
| AþaÝ do JoÒo | 1859 |
+--------------+-----------+
Se agora eu consultar esses dados pelo php o resultado aparece lindamente no navegador. Estou fazendo algo como:
$query = "Select nome from tb_imoveis where id_imovel=1859"; $resultado=acessaBD($query); $linha = mysql_fetch_array($resultado); echo $linha['nome'];
Pelo que eu tenho pesquisado, acredito que o problema eh que o mysql está usando um charset e o php (ou o apache, nao sei) esta usando outro. Porem, como ajeito? Eu tentei deletar o banco de dados, e criei um todo latin1 pra ve se resolvia, mas nesse caso passou a exibir errado tanto ná página em php quanto no banco de dados. O banco "todo latin1" a que eu me refiro eu criei assim:
CREATE TABLE `tb_imoveis` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nome` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ,
`endereco` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
) ENGINE = innodb CHARACTER SET latin1 COLLATE latin1_swedish_ci;
Minhas variáveis do sistema estão assim:
mysql> show variables like 'c%';
+--------------------------+-----------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | h:\wamp\bin\mysql\mysql5.0.45\share\charsets\ |
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | utf8_general_ci |
| completion_type | 0 |
| concurrent_insert | 1 |
| connect_timeout | 5 |
+--------------------------+-----------------------------------------------+
14 rows in set (0.00 sec)
O que faço? Alguém me ajuda?
Edição feita por: boirock, 14/03/2008, 14:18.
uso de [quote]