Para manipular codificações de caracteres(charset) o PHP da suporte ao recode, recurso muito utilizado para leitura e conversão de conteúdo em uma codificação de caracter diferente.

A manipulação deste recurso na linguagem PHP se dá pelas funções (recode_string, recode_file e recode).

Função recode_string

A função recode_string é utilizada especificando a conversão do tipo existente, para o tipo de caracter desejado. Em seguida como segundo parametro é especificado o conjunto de caracteres ou string para efetuar a conversão. Vejamos um exemplo:

[php]
<?php
$p = "Olá mundo ! palavra com ão ";
$c = recode_string("utf-8..iso-8859-1", $p);
?>
[/php]

Reparem no código acima, mais precisamente no primeiro parametro passado para a função recode_string. Este parametro possui a especificação da codificação de caractere atual, logo em seguida aos simbolo “..” é especificado a codificação de caractere a ser convertido o conjunto de caracteres passado como segundo parametro da função.

Se verificar a documentação da linguagem PHP para manipular o recode, vamos rerificar uma função similar a função recode_string, que se chama apenas recode e possui os mesmos parametros e o funcionamento da função citada.

Função recode_file

A função recode_file é bem similar a função recode_string, mudando apenas o fato de sua entrada de dados, o segundo parametro da função, ser um recurso de arquivo(Handle).

A função recode_file possui ainda um terceiro parametro, também um recurso de arquivo que especifica a saida convertida dos dados para o arquivo.

O primeiro parametro, assim como na função recode_string, especifica o tipo de codificação de caractere atual para a codificação a ser efetuada pela função.

Abaixo um exemplo do uso da função recode_file:

[php]
<?php
$file_in = fopen(dirname(__FILE__)."/file-in.txt", "r");

if(!$file_in){
die("Erro ao abrir o arquivo para leitura !");
}

/* Arquivo convertido */
$file_out = fopen(dirname(__FILE__)."/file_out.txt", "w");

if(!$file_out){
die("Erro ao criar o arquivo para gravação !");
}

recode_file("iso-8869-1..utf-8", $file_in, $file_out);

?>
[/php]