Ao trabalhar com diferentes codificações de caracteres no PHP e no Laravel, você pode encontrar erros na conversão do charset como o seguinte: iconv(): Wrong charset, conversion from 'UTF7-IMAP' to 'UTF-8//IGNORE' is not allowed
Este erro ocorre ao tentar usar a função iconv()
para converter uma string do charset ‘UTF7-IMAP’ para o charset ‘UTF-8//IGNORE’. Neste artigo, exploraremos as possíveis causas desse erro e forneceremos soluções para corrigi-o.
Causas do erro iconv(): Wrong charset, conversion from ‘UTF7-IMAP’ to ‘UTF-8//IGNORE’ is not allowed
Pode haver alguns motivos possíveis para este erro:
- Extensão PHP iconv ausente ou desatualizada: A extensão
PHP iconv
pode não estar instalada ou ativada no seu sistema, ou pode estar desatualizada. Verifique se a extensão está instalada, ativada e atualizada. - CHARSET não suportado: O charset ‘UTF7-IMAP’ pode não ser suportado pela implementação do
iconv
do seu sistema. Sistemas diferentes podem ter suporte a codificação de caracteres diferentes em suas bibliotecasiconv
.
Soluções para corrigir o erro iconv(): Wrong charset, conversion from ‘UTF7-IMAP’ to ‘UTF-8//IGNORE’ is not allowed
Instale ou habilite a extensão PHP iconv
Para instalar ou ativar a extensão iconv
, siga estas etapas:
a. Se você não tiver a extensão iconv
do php instalada, instale-a usando o gerenciador de pacotes. Por exemplo, nos sistemas Ubuntu/Debian/Mint, você pode executar:
sudo apt-get install php-iconv
b. Se você estiver usando várias versões PHP, precisará especificar a versão do PHP para a qual deseja instalar a extensão. Por exemplo, para instalar a extensão iconv do Php 7.4, execute:
sudo apt-get install php7.4-iconv
c. Se a extensão estiver instalada, mas desativada, você poderá ativá-la atualizando o arquivo de configuração php.ini
. Encontre e descomente (remova a vírgula) a linha:
;extension=iconv
Reinicie seu servidor da web depois de fazer alterações no arquivo php.ini
.
Use uma função alternativa para conversão de charset:
Se a função iconv()
não suportar o charset ‘UTF7-IMAP’, você poderá tentar usar a função mb_convert_encoding()
da extensão php mbstring
:
$input = "Your UTF7-IMAP encoded string";
$output = mb_convert_encoding($input, "UTF-8", "UTF7-IMAP");
Se você não tiver a extensão do php mbstring
instalada, pode instala-la usando o gerenciador de pacotes.Por exemplo, nos sistemas Ubuntu/Mint/Debian, você pode executar:
sudo apt-get install php-mbstring
Lembre-se de reiniciar seu servidor da web após a instalação da extensão.
Seguindo estas etapas, você poderá corrigir o erro e converter com sucesso sua string do charset ‘UTF7-IMAP’ para o charset ‘utf-8//ignore’.
Instalação de extensões php iconv e mbstring no Windows, Linux Ubuntu e Mint, macOS
Agora, vamos ver como instalar as extensões php necessárias em vários sistemas e ambientes operacionais.
Instalando o ICONV e MBSTRING nos Linux baseados em Debian
Instalando extensões php iconv e mbstring nos Linux: Ubuntu/Debian/Mint
Instale as extensões de iconv e mbstring:
sudo apt-get install php-iconv php-mbstring
Se estiver usando várias versões PHP, especifique a versão desejada:
sudo apt-get install php7.4-iconv php7.4-mbstring
Instalando o ICONV e MBSTRING no CentOS
Linux: CentOS
Instale as extensões de iconv e mbstring:
sudo yum install php-iconv php-mbstring
Se estiver usando várias versões PHP, especifique a versão desejada:
sudo yum install php74-iconv php74-mbstring
Instalando o ICONV e MBSTRING no macOS
Mac OS
Se estiver usando homebrew
, você pode instalar as extensões com o seguinte comando:
brew install php-iconv php-mbstring
Se estiver usando várias versões PHP, especifique a versão desejada:
brew install [email protected] [email protected]
Instalando o ICONV e MBSTRING no Windows XAMPP
Windows: XAMPP
- Abra o arquivo
php.ini
localizado no diretórioxampp\php
. - Encontre e retire os comentários das seguintes linhas removendo o ponto e vírgula:
;extension=iconv
;extension=mbstring
- Salve o arquivo
php.ini
e reinicie o servidor Apache.
Instalando o ICONV e MBSTRING no Windows WampServer
Windows: WampServer
- Abra o arquivo
php.ini
localizado nowamp\bin\php\php{versão}
diretório (substitua {versão} pela sua versão php). - Encontre e retire o comentário das seguintes linhas removendo o ponto e vírgula:
;extension=iconv
;extension=mbstring
Salve o arquivo php.ini
e reinicie o servidor Apache.
Considerações finais
Seguindo estas etapas, você poderá corrigir o erro e converter com sucesso sua string do charset ‘UTF7-IMAP’ para charset ‘UTF-8//IGNORE’. Compreender e abordar as causas subjacentes do erro pode ajudar você a garantir que seus aplicativos PHP e Laravel possam lidar com diferentes codificações de caracteres.
Comentários