Olá pessoal estou começando agora com o Yii e estou com um problema de charset. Tenho uma aplicação que importa um planilha excel e salva no banco mysql, em uma tabela que esta com o charset definido como Latin1. O problema é quando no php eu consigo dar um utf8_decode e fazer a string ficar em utf8, dai quando vai salvar no banco da erro nas palavras acentuadas. Ja tentei usar o iconv(‘UTF-8’,‘LATIN1’,$str) mesmo forçando a conversão de para Latin1 a string é salva em um charset diferente no qual não reconhece acentuação.
Na aplicação também existe a opção de inserir na mesma tabela através de um form, e quando é feito inserção ou update pelo form não da erro charset ou seja os acentos aparecem corretamente.
Uma das soluções que encontrei aqui no forum é alterar o charset no main para ‘latin1’, porém estou com duvida pois quando faço um insert através de um $form passando pelo actionInserir as informções são inseridas normalmente sem erro de codificação, se eu altera o charset no main será que vai mudar alguma coisa nas outras parte da aplicação ?
Já houve o questionamento dos acentos no framework, nas CListView e CGridView, para evitar de ficar usando o utf8_decode()/utf8_encode(), deixa toda a aplicação setada como utf-8.
Se você tiver usando algum IDE, defini nas configurações para todos os arquivos abertos seja convertido para utf-8.
Eu uso o netbeans e ele tem essa definição, assim você não terá problemas de adicionar palavras acentuadas ou caracteres especial diretamente no código fonte e no banco de dados.
Obrigado pela dica, porém eu não quis alterar o código pois é de um site que peguei para dar manutenção… Mas enfim consegui encontrar o ponto de falha, é o seguinte quando eu exporto para excel(Eexcelview) tudo é exportado em UTF-8, então se o usuario fizer a importação da planilha sem alterar nada basta eu dar um utf8_decode e em seguida um utf8_encode novamente, porém se o usuario mudar alguma coisa no arquivo pode ser que o aplicativo de leitura .xls altere o charset então eu simplesmente dou um uft8_encode, fazendo exatemente isso não tive mais problemas!!!