Ir para conteúdo

Arquivado

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

Fernando José

Encoding

Recommended Posts

Pessoal,

 

No meu campo texto no mySQL os dados com acento está sendo salvo assim: saúde

 

Ai quando tento pesquisar (select * from tabela where texto LIKE '%saúde%') retorna vazio.

 

Como converto saúde para saúde?

 

Alguém pode me ajudar?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Além de verificar o charset dos arquivos e conexões com o SGBD, usando o mysql, use a collation utf8_swedish_ci. Essa collation facilita, e muito, o uso de acentos no SGBD, inclusive a busca (LIKE) por palavras acentuadas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Na página que envia (cadastrar) está:

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

 

Na página que lista está:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

 

Já tentei stripslashes, utf8_encode, utf_decode e nada resolveu.

 

Estou usando o FCKeditor no campo de texto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo deve ser o mesmo. Não importa qual escolha, deve manter somente um.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,


Resolvi assim:

 

function imprime($texto)
{

	$substituir = array(

	'/á/' => 'á',

	'/é/' => 'é',

	'/í/' => 'í',

	'/ó/' => 'ó',

	'/ú/' => 'ú',

	'/ã/' => 'ã',

	'/õ/' => 'õ',

	'/â/' => 'â',

	'/ê/' => 'ê',

	'/î/' => 'î',

	'/ô/' => 'ô',

	'/û/' => 'û',

	'/ç/' => 'ç',

	'/Á/' => 'Á',

	'/É/' => 'É',

	'/Í/' => 'Í',

	'/Ó/' => 'Ó',

	'/Ú/' => 'Ú',

	'/Ã/' => 'Ã',

	'/Õ/' => 'Õ',

	'/Â/' => 'Â',

	'/Ê/' => 'Ê',

	'/Î/' => 'Î',

	'/Ô/' => 'Ô',

	'/Û/' => 'Û',

	'/Ç/' => 'Ç',

	'/à/' => 'à',

	'/À/' => 'À'

	);
	
	return preg_replace(array_keys($substituir), array_values($substituir), $texto);
}

$pesquisar = imprime($_GET['p']);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fernando, bastaria você passar a string acentuada por htmlentities() :thumbsup:

 

Mas eu passei aqui só pra...

 

 

Além de verificar o charset dos arquivos e conexões com o SGBD, usando o mysql, use a collation utf8_swedish_ci. Essa collation facilita, e muito, o uso de acentos no SGBD, inclusive a busca (LIKE) por palavras acentuadas.

 

Por quê o swedish é o mais adequado? :huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Bruno vou contar um caso meu, não vai responder, mas é interessante... Antigamente quando entrei na agencia, todo mundo aqui usava Latin Swedish... e nunca entendia pq... começou a dar muito problema com acento... padronizei tudo pra UTF8_general_ci e, olha que coisa, problemas acabaram! :closedeyes:

 

Agora muita gente acaba usando swedish mesmo, e nunca vi ninguem dizer pq.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por quê o swedish é o mais adequado? :huh:

Eu comecei a usar quando utilizei pela primeira vez o MySQLWorkbench, ele sugere como default.

 

Sem perceber, usei em um projeto. Descobri que ao pesquisar por palavras como, no exemplo, "saúde" ou "saude" ele retornava os mesmos resultados, ignorando os acentos.

 

No formato padrão, utf8_general_ci, ele não ignora os acentos, e palavras como "saúde" não são localizadas quando utiliza-se "saude" no LIKE.

 

@Bruno agora vc me pegou... Antigamente quando entrei na agencia, todo mundo aqui usava Latin Swedish... e nunca entendia pq... começou a dar muito problema com acento... padronizei tudo pra UTF8_general_ci e, olha que coisa, problemas acabaram! :closedeyes:

latin_swedish é diferente de utf8_swedish. Os problemas mais provavelmente foram causados por ser latin e resolvidos por serem alterados para utf8.

 

latin 1 = iso-8859-1 = Windows 1252

 

Em alguns lugares encontra-se de um tipo, em outros de outro. No final, tem os mesmos resultados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sempre usei o utf8_general_ci, mas essa do swedish pareceu interessante.

 

Será que não existem palavras acentuadas em sueco e, antes de enviar a query o banco converte os caracteres acentuadas para suas contra-partes sem acento?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O funcionamento eu já desconheço, mas essa configuração me ajudou, e muito, no meu tcc... LOL

 

Eu também pensei o mesmo, que é referente ao alfabeto local (sueco no caso). Teria que buscar na documentação. Só sei que é mais recomendado usar swedish ao invés de general.

Compartilhar este post


Link para o post
Compartilhar em outros sites

#9,

 

deve ter ocorrido algum outro conflito pois o utf8_general_ci permite a busca acentuada tb..

 

 

 

 

#6... sim, resolve, mas é uma gambiarra para esconder outra gambiarra..

 

o "certo" seria reconverter os dados em htmlentities do banco para o formato normal

e não permitir mais que grave com htmlentities quando não necessário.

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.