Qual de nós está certo?
Era uma vez, seu chefe era. Mas com o passar do tempo, as coisas mudam. Atualmente você é (mas antes de correr para o seu chefe, não deixe de ler a resposta de Nelson também ).
As versões antigas do MySQL, e as versões antigas de quase tudo , lidavam muito melhor com o Latin1 / ISO-8859-1 (5) mais antigo que o UTF8.
Há uma razão pela qual o UTF8 foi criado, evoluído e promovido principalmente em todos os lugares: se implementado corretamente, funciona muito melhor . Existem alguns problemas de desempenho e armazenamento decorrentes do fato de um caractere Latin1 ter 8 bits, enquanto um caractere UTF8 pode ter de 8 a 32 bits. Portanto, ao planejar, VARCHAR
é necessário levar isso em consideração. E suas rotinas de pesquisa serão um pouco mais lentas. Eles serão capazes de fazer mais coisas (por exemplo, pesquisas com sensibilidade acento ou sem . Não pode fazer aqueles em Latin1 sem um extenso trabalho), mas vai demorar um pouco mais tempo.
Mas, por outro lado, o armazenamento é barato , a sobrecarga realista do tamanho dos arquivos é inferior a 2-3%, o poder da computação também é barato e fica mais barato de acordo com a Lei de Moore; enquanto seu tempo e as expectativas de seus clientes definitivamente não são .
Você pode ter que se preocupar para ferramentas de busca etc. se você fosse o único a desenvolver essas ferramentas. Mas você provavelmente não é. Você usa essas ferramentas; mesmo aqueles que não eram completamente compatíveis com UTF8 ontem (como os MySQLs anteriores não eram), são hoje ou serão em breve (por exemplo, MySQL com suporte a utf8mb4).
Portanto, planejando e implementando cuidadosamente o UTF8 da maneira certa ( sem pensar no Latin1 como uma reflexão tardia), você pode ter um código razoavelmente à prova de futuro , o que, se você planeja fazer negócios com qualquer país asiático, é muito bom Coisa. E se você não tiver esses planos, outras pessoas terão, e elas poderão ser seus clientes, fornecedores ou parceiros.
Portanto, quando eles começarem a enviar dados UTF8, você precisará configurar um procedimento complicado para converter para o Latin1 e lidar com casos insolúveis.
Quando você leva em consideração no orçamento o custo de várias escaramuças contra os ninjas do mojibake , e considera que eles não vão desaparecer - como você já descobriu -, você perceberá que usar o UTF8 não é apenas mais simples, mas sim mais barato também.