Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá.
Pesquisei sobre o assunto e encontrei diversos tópicos aqui no fórum, mas infelizmente nenhum funcionou para mim.
Estou precisando ordenar por nome uma lista de categoria. O problema ocorre quando a palavra inicia com acentuação. Esta ocorrendo que depois de 'Automação Industrial', ele mostra 'Óticas' e somente então continuam com 'Balanças'. A ordenação alfabética esta correta exceto quando existe acentuação.
O mesmo problema quando procuro por 'Ótica', mesmo estando cadastrada na tabela, não encontra. Pesquisando 'otica' também não retorna.
Codificação banco de dados: latin1_swedish_ci
Estrutura da tabela:
CREATE TABLE IF NOT EXISTS empresas_cat (id_cat int(5) NOT NULL auto_increment,nome varchar(100) NOT NULL,id int(5) NOT NULL,
PRIMARY KEY (id_cat)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=127 ;
Na tabela o palavra aparece escrita: Óticas
Tentei usar sem sucesso:
$busca_avanc = mysql_query("SELECT * FROM empresas_cat ORDER BY nome COLLATE 'latin1_swedish_ci'");
$busca_avanc = mysql_query("SELECT * FROM empresas_cat ORDER BY nome ");Obrigado pelo link Motta.
Tentei com a opção de 'CONVERT' no SQL mas não surtiu efeito. Usei utf8 e latin1.
Tentei também criar a função através da aba SQL no PHPMyAdmin, já que não sei de outra forma, e retornou erro.
Escolha usar charset utf8 e collate utf8_unicode_ci.
Exemplo:
CREATE TABLE IF NOT EXISTS `empresas_cat` (
`id_cat` int(5) NOT NULL auto_increment,
`nome` varchar(100) NOT NULL,
`id` int(5) NOT NULL,
PRIMARY KEY (`id_cat`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci AUTO_INCREMENT=127 ;Prog, obrigado,
Recriei a tabela usando o charset utf8, mas como os dados vieram da anterior, os acentos estão estilo Â" no caso do Ó de Óticas, assim como estão na outra tabela empresas onde preciso fazer busca por termo. Alguma idéia de como lidar com isso?
Acredito que o caminho mais rápido, se houver a necessidade de recriar todas as tabelas você pode exportar para um script, alterar a collation e o charset e executar o script.
Com o banco de dados online, você precisa fazer um script para alterar e converter, não há um "comando mágico". Melhor dizendo, eu desconheço a existência de um.
http://forum.imasters.com.br/topic/412970-order-by-e-acentuacao/