Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mortigas

[Resolvido] caracteres especiais

Recommended Posts

Possuo uma página com programação em PHP enela um banco de dados onde informações são colocadas em uma tabela tem ocorrido algo que não consigo descobrir o motivo.

Uma mesma palavra é inserida de forma diferente devido aos caracteres especiais, as vezes de form correta e outra vez errada.

ex:

 

Locomoção e outras vezes locomoÃ$Â@o;

Inteiriça e outras vezes Inteiri@$a;

Pedagógicos e outras vezes PedagÊ@gicos.

 

Não entendo porque as vezes é inserida de forma correta e outras não, se tem a ver om o navegador usado pela pessoa que acessa ou ...

 

coloquei no cabeçário <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">.

 

Agradeço a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual SGBD está usando e qual é a codificação daa tabela?

 

Mantenha tudo na mesma codificação, UTF-8, por exemplo. Tanto o banco, quanto a meta tag content-type e os arquivos (codificação do editor de textos)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os dados do banco de dados são os seguintes:

ost

 

* Versão do Servidor: 4.0.27-log

* Versão do Protocolo: 10

* Servidor: Localhost via UNIX socket

 

 

phpMyAdmin - 2.11.1.1

 

* Versão do cliente MySQL: 4.0.27

* Extensões PHP usadas: mysql

*

Linguagem - Language Info:

*

Tema / Estilo:

*

Tamanho da fonte:

* Documentação do phpMyAdmin

* Wiki phpMyAdmin

* Página Oficial do phpMyAdmin

* [ChangeLog] [subversion] [Lists]

 

 

Não sei se era isso q você queria saber.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não.

perguntei qual é a codificação dos arquivos. Isso é visto no editor de textos que está usando para escrever os scripts.

 

Geralmente deixo tudo em UTF-8. Isso nunca gerou problemas com caracteres especiais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
em seu código HTML.

 

em sua base de dados, em collation, deixe:

latin1_swedish_ci
na base de dados também.

 

depois adicione novos registros. estás inserindo dados via php/ajax ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara não tenho acesso a estas informações, tenho o banco de dados no TERRA e entrei em contato com eles , porém, só me responderam que não é necessário anterar estas configurações. Informei que queria pelo menos saber quais eram e até hoje não me responderam.

Só recapitulando no banco de dados uma informaçãos entra de formas diferentes e não sei o porque. Abaixo exeplo:

 

 

00000010605 Acessórios p/Impressoras subcategoria NC menutopo lista_subcat_2 2009-04-06 09:36:03

 

00000010478 Acessórios p/Impressoras subcategoria NC menutopo lista_subcat_2 2009-04-05 22:39:42

 

Outras vezes, mais raro, ela some o espaço entre as palavras.

 

Não sei mais o que fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Finalmente o terra respondeu PARCIALMENTE !!

 

"Em atenção ao seu e-mail, informamos que nosso servidor MySQL utiliza o padrão iso-8859-1."

 

Apesar te eu ter pedido as informações :

Qual o Conjunto de caracteres MySQL:

Qual o Collation de conexão do MySQL:

Compartilhar este post


Link para o post
Compartilhar em outros sites

mortigas, as tabelas podem possuir collation independente do padrão do server.

 

e para ver as configs, basta executar a query

 

show variables

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu hinom !!!

 

Apliquei o comando e respondeu ..

 

character_set = latin1

character_sets = latin1 ujis sjis dec8 dos german1 hp8 koi8_ru latin...

 

 

Isso quer disser que os dois itens são latin1 ? (Conjunto de caracteres MySQL e Collation de conexão do MySQL)

 

Eu tenhio usado o comando <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> no inicio de cada página!

O que não entendo é porque as vezes sai correto e as vezes não ? será que depende do navegador usado ou da configuracão do mesmo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso é a spec do banco de dados

 

você precisa certificar-se de qual engine, charset e collation está usando as suas tabelas

verfiique também se os campos das tabelas possuem algum collation em especial

 

 

no MYSQL é possível fazer o seguinte

 

 

SERVER

charset LATIN1

TABLE

charset SHIFT_JIS

FIELD

charset UTF8

 

isso significa que

 

independente do server estar em latin1, e da taela estar em SHIFT_JIS, os dados para o campo FIELD, serão gravados em UTF-8

 

se você criou as tabelas sem especificar charset, entao ela assumirá o valor default que é do server "LATIN1"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de mais nada quero agradecer hinom pela ajuda!

 

crei um script para realizar um teste que foi o seguinte

<?

$posi=15157; (e $posi=15135;)

$query = "SELECT * FROM contador WHERE cont_id = '$posi' ";

$resultado = mysql_query($query,$conexao);

while ($linha = mysql_fetch_array($resultado))

{

$cont_id5=$linha['cont_id'];

$str=$linha['cont_refe'];

}

$encoding = mb_detect_encoding($str, "UTF-8, ISO-8859-1");

echo "cont_id5= $cont_id5 -- str=$str -- encoding=$encoding" ?><BR><?;

?>

 

Que retornou o seguinte:

 

cont_id5= 00000015157 -- str=Blocos Lógicos -- encoding=ISO-8859-1

cont_id5= 00000015135 -- str=Blocos Lógicos -- encoding=UTF-8

 

Como pode se as duas inserções foram feitas com a mesma página e nela esta o coamando

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

os registros foram inseridos por qual aplicativo ?

como estava a configuração do charset do aplicativo e do banco de dados no momento em que foram inseridos ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

"os registros foram inseridos por qual aplicativo ?

como estava a configuração do charset do aplicativo e do banco de dados no momento em que foram inseridos ? "

 

Não sei se é isso que queres saber mas foi inserido através de uma página gerada em PHP e esta foi criada no PHP EDITOR (ondejá procurei, sem sucesso, encontrar esta informção).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara

 

baixei o programa, realizei as alterações, criei os arquivos porém no mysql ao digitar os comandos

 

CREATE DATABASE charset_test;

 

USE charset_test;

 

CREATE TABLE `encoding` (

`id` int(4) NOT NULL auto_increment,

`text` varchar(100) NOT NULL default '',

PRIMARY KEY (`id`),

UNIQUE KEY `id` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

 

 

retornou

 

Erro

consulta SQL:

 

CREATE DATABASE charset_test;

 

Mensagens do MySQL :

 

#1044 - Access denied for user: 'benga1@%' to database 'charset_test'

 

ZEBROU

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. possui um usuário com privilégios administrativos do mysql ?

 

2. executou o teste localmente ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que não pois no LOCALHOST esta escrito:

 

Versão do Servidor: 4.0.27-log

Versão do Protocolo: 10

Servidor: Localhost via UNIX socket

Usuário: benga1@localhost

Criar novo Banco de Dados: Sem privilégios

phpMyAdmin - 2.11.1.1

Versão do cliente MySQL: 4.0.27

Extensões PHP usadas: mysql

 

Este terra é uma meleca pois na Hostnet, onde controlo outra página, tenho acesso a tudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.