mb_detect_encoding detecta ASCII como UTF-8?
Eu estou tentando converter automaticamente metadados IPTC importados de imagens para UTF-8 para armazenamento em um banco de dados com base no PHPmb_
funções.
Atualmente, parece com isso:
$val = mb_convert_encoding($val, 'UTF-8', mb_detect_encoding($val));
No entanto, quandomb_detect_encoding()
é fornecida uma string ASCII (caracteres especiais nos campos Latin1 de 192-255) que a detecta como UTF-8, portanto, na tentativa seguinte de converter tudo em UTF-8 adequado, todos os caracteres especiais são removidos.
Eu tentei escrever meu próprio método procurando por valores Latin1 e se nenhum ocorresse, eu continuaria deixandomb_detect_encoding
decidir o que é. Mas parei no meio do caminho quando percebi que não posso ter certeza de que outras codificações não usam os mesmos valores de bytes para outras coisas.
Então, existe uma maneira de detectar corretamente ASCII para alimentar amb_convert_encoding
como a codificação de origem?