O agrupamento não tem nada a ver com o armazenamento. Você precisa definir o charset para determinar a codificação de armazenamento. A ordenação governa como a comparação e a classificação devem acontecer. A ordenação deve estar ciente do conjunto de caracteres, mas, caso contrário, não tem nada a ver com o conjunto de caracteres.
Para responder à sua pergunta, você pode usar
iconv
para traduzir o texto e depois compará-lo. Por exemplo:function compare($s1, $s2) {
return strcmp(
iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $s1),
iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $s2));
}
Isso é basicamente o que o MySql fará por você, embora provavelmente seja mais rápido e possa ter uma tabela de agrupamento ligeiramente diferente do
ISO-8859-1//TRANSLIT
. Não tenho certeza disso. Provavelmente seria mais fácil usar o banco de dados, como outros já sugeriram.