PauloRB.dev

Desenvolvedor de Software

Como Converter Arquivos TXT de UTF-8 para ANSI com PHP | PauloRB.dev Como Converter Arquivos TXT de UTF-8 para ANSI com PHP – PauloRB.dev
Como Converter Arquivos TXT de UTF-8 para ANSI com PHP

Como Converter Arquivos TXT de UTF-8 para ANSI com PHP

Quando lidamos com arquivos de texto, a codificação de caracteres é um aspecto fundamental para garantir que os textos sejam exibidos corretamente. No entanto, em muitos casos, especialmente em sistemas legados, pode ser necessário converter arquivos de uma codificação moderna, como UTF-8, para ANSI (ISO-8859-1). Este artigo explica como fazer isso usando PHP, com exemplos práticos.

Diferença entre UTF-8 e ANSI

  • UTF-8: Uma codificação moderna e amplamente usada que suporta uma ampla gama de caracteres, incluindo idiomas com caracteres especiais e emojis. Ela é retrocompatível com ASCII.
  • ANSI (ISO-8859-1): Codificação mais antiga e limitada que suporta apenas caracteres latinos e não é compatível com idiomas mais complexos.

No caso de arquivos sem caracteres acentuados ou especiais, como “Este e um texto de exemplo”, ambos os formatos podem ser exibidos de forma idêntica em editores simples como o Bloco de Notas.


Problema Prático

Se você criar um arquivo de texto sem caracteres acentuados, como:

$content = "Este e um texto de exemplo. Sem caracteres especiais!";

Ele será salvo corretamente em UTF-8, mas parecerá “igual” ao ser visualizado como ASCII, porque os caracteres usados pertencem à faixa básica compatível entre UTF-8 e ASCII.

Porém, ao lidar com arquivos que precisam estar especificamente em ANSI, a conversão é necessária.

Exemplo Completo em PHP

Gerar um Arquivo UTF-8 e Convertê-lo para ANSI

O seguinte script gera um arquivo .txt em UTF-8 e o converte para ANSI:

<?php

function generateUtf8File($filePath, $content)
{
    // Gera um arquivo UTF-8
    file_put_contents($filePath, $content);
    echo "Arquivo UTF-8 gerado em: $filePath\n";
}

function convertToAnsi($inputFile, $outputFile)
{
    // Verifica se o arquivo de entrada existe
    if (!file_exists($inputFile)) {
        throw new Exception("O arquivo de entrada não foi encontrado: $inputFile");
    }

    // Lê o conteúdo do arquivo
    $content = file_get_contents($inputFile);

    // Converte o conteúdo para ANSI (ISO-8859-1)
    $ansiContent = iconv("UTF-8", "ISO-8859-1//IGNORE", $content);

    // Grava o conteúdo convertido no arquivo de saída
    file_put_contents($outputFile, $ansiContent);

    echo "Arquivo convertido para ANSI e salvo em: $outputFile\n";
}

// Caminhos dos arquivos
$utf8File = 'arquivo_utf8.txt';
$ansiFile = 'arquivo_ansi.txt';

// Conteúdo do arquivo UTF-8
$content = "Este é um texto de exemplo. Sem caracteres especiais!";

// Gera o arquivo UTF-8
generateUtf8File($utf8File, $content);

// Converte para ANSI
try {
    convertToAnsi($utf8File, $ansiFile);
} catch (Exception $e) {
    echo "Erro: " . $e->getMessage() . "\n";

Explicação do Código

  1. Função generateUtf8File:
    • Gera um arquivo .txt com codificação UTF-8.
  2. Função convertToAnsi:
    • Lê o arquivo criado.
    • Usa a função iconv para converter o conteúdo de UTF-8 para ANSI (ISO-8859-1).
    • Salva o arquivo convertido com um novo nome.

 

Por Que o Texto Sem Acentos Parece Igual em ANSI e UTF-8?

Arquivos sem caracteres especiais são exibidos corretamente porque:

  1. UTF-8 é compatível com ASCII:
    • Letras, números e pontuações na faixa de 0 a 127 são representados exatamente da mesma forma em ambas as codificações.
  2. O Bloco de Notas reconhece UTF-8 automaticamente:
    • Mesmo que o arquivo seja UTF-8, o Bloco de Notas interpreta corretamente caracteres básicos sem a necessidade de ajustes adicionais.
  3. Sem caracteres especiais, não há bytes adicionais:
    • A codificação não precisa de bytes extras para representar letras simples.

 

 

Mais Posts

Variáveis Dinâmicas e Referências no PHP

Variáveis Dinâmicas e Referências no PHP

No mundo da programação PHP, compreender o conceito de variáveis de variáveis e o uso de referências é fundamental para... Leia mais

Como Usar a Porta 443 para Conexões SSH com o Bitbucket e Contornar Restrições de Rede

Como Usar a Porta 443 para Conexões SSH com o Bitbucket e Contornar Restrições de Rede

Se você já se deparou com a frustrante mensagem de erro “ssh: connect to host bitbucket.org port 22: Network is... Leia mais

Função PHP para remover tags html de Strings

Função PHP para remover tags html de Strings

Quando trabalhamos com strings que podem conter HTML, é comum nos depararmos com tags mal formatadas, como < p >... Leia mais

Solucionando Problemas de Conexão no PostgreSQL: Um Guia Prático

Solucionando Problemas de Conexão no PostgreSQL: Um Guia Prático

Quando se trata de gerenciar bancos de dados, o PostgreSQL se destaca como uma escolha robusta e flexível para desenvolvedores... Leia mais