+5

Trabalhando com Unicode

criado por Rubens Takiguti Ribeiro em 02/12/2009 9:28pm
PHP e Unicode

PHP 5 não dá suporte nativo às codificações Unicode. Porém, uma das grandes promessas para PHP 6 será a divisão do tipo string em 2: string e binary. O futuro tipo string será usado para representar textos em alguma codificação e será suportada a utilização de unicode. Já o tipo binary será usado para armazenar sequência de bytes, assim como é o tipo "string" atual.

Atualmente, se fizermos o seguinte código em PHP e salvarmos em UTF-8...
<?php
$texto
= 'açAEIOU';
$letra
= $texto[3];
$sub  
= substr($texto, 0, 3);
$len  
= strlen($texto);

... o valor da variável $letra receberia o valor "A", a variável $sub receberia o valor "aç" e a variável $len receberia o tamanho 8.

Isso acontece porque o operador colchetes obtem o N-ésimo byte da string e não o N-ésimo símbolo. Da mesma forma, a função substr trabalha com bytes e não com símbolos. E a função strlen devolve o número de bytes e não o número de símbolos. Como o símbolo "ç" ocupa dois bytes em UTF-8, estas funções tem seu significado afetado.

Portanto, para trabalhar com textos em UTF-8, é preciso ferramentas externas que simulem as operações básicas sobre textos. Uma alternativa simples é usar a extenão PRCE para obter substring, já que a extensão já suporte codificação UTF-8.

Para um script PHP informar para o navegador que está utilizando a codificação UTF-8, basta usar a função header e informar o valor da diretiva Content-type com o valor adequado. Por exemplo:

<?php
header
('Content-Type: text/html; charset=UTF-8');
...

Uma outra alternativa é simular o comportamento do cabeçalho HTTP através da tag HTML "meta":

<html>
 
<head>
   
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    ...

Comentários:

Mostrando 1 - 6 de 6 comentários
PazNatan disse:
ficou legalzinho
03/05/2010 1:01pm (~15 anos atrás)

Nelson disse:
Artigo explicado de forma bem "entendível", gostei muito.
Sugiro um deste tipo falando de array, seria legal.
17/03/2010 1:30pm (~15 anos atrás)

Ótimo artigo!!!
Você explicou muito bem desde a base até ao topo, fazendo-o ficar fácil de compreender!!!
Parabéns!!!
13/03/2010 7:13pm (~15 anos atrás)

Daniel Silva disse:
Uau! Magnífico o artigo! Muito elucidativo! Meus parabéns!
06/01/2010 1:10am (~15 anos atrás)

Marcos Regis disse:
Ótimo artigo. Parabéns.
05/12/2009 4:13pm (~15 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)