Como o conjunto de caracteres, se você puder, definitivamente UTF-8.
Como o agrupamento - isso é um pouco desagradável para idiomas com caracteres especiais. Existem vários tipos de agrupamentos. Todos eles podem armazenar todos os tremas e outros caracteres, mas diferem na forma como tratam os tremas em comparações, ou seja, se
u = ü
é verdadeiro ou falso; e na classificação (onde nos alfabetos os Tremas estão localizados na ordem de classificação).
Para encurtar a história, sua melhor aposta é
utf8_unicode_ci
Permite pesquisas que não diferenciam maiúsculas de minúsculas; Ele trata
ß
como ss
e usa classificação DIN-1. Infelizmente, como todos os agrupamentos Unicode não binários, ele trata u = ü
o que é um incômodo terrível porque uma busca por "Muller" também retornará "Müller". Você terá que contornar isso definindo um agrupamento com reconhecimento de trema em tempo real. ou
utf8_bin
Este agrupamento não tem o
u = ü
problema, mas apenas pesquisas sensíveis a maiúsculas e minúsculas são possíveis. Não tenho certeza se existem outros efeitos colaterais ao usar o agrupamento binário; Fiz uma pergunta sobre isso aqui .
Esta página de manual do MySQL dá uma boa visão geral sobre os vários agrupamentos e as consequências que eles trazem no uso diário.
Aqui é uma visão geral dos agrupamentos disponíveis no mySQL.