terça-feira, 25 de setembro de 2007

Problema de acentuação com PHP e JSON

Hoje estava trabalhando em uma aplicação com AJAX e me deparei um com problema de acentuação no retorno de alguns dados via JSON do MySQL.
Se em algum campo tiver a palavra "Éramos", por exemplo, ao executar um encode (utilizei a Services_JSON provida pelo PEAR), ele retornará algo como \u0072amos que será renderizado como "ramos".
Depois de googlar sobre o assunto, descobri uma maneira de evitar esse problema.
Considere que o código abaixo é um PHP que retorna dados no formato JSON

<?php
header('Content-type: application/json charset=iso-8859-1');

/*
* codigo para conexao no banco e enviar consulta
* ...
*/

while($row = fetch()){
array_walk($row, 'toUtf8');
$data[] = $row;
}

/*
* codigo para terminar de montar o array de retorno dos dados
*/

require_once('JSON.php');
$json = new Services_JSON();
echo
$json->encode($returnValue); // Instead of json_encode


function toUtf8(&$item, $key) {
$item = iconv("iso-8859-1","utf-8",$item);
}

O segredo está aqui:
$item = iconv("iso-8859-1","utf-8",$item);

O fato de converter todas strings para utf-8 utilizando a iconv, garantiu que meus dados fossem renderizados corretamente.

Por hoje é isso!
Abraços.

quarta-feira, 5 de setembro de 2007

Desenvolvimento para Linux

Após longos seis meses volto a postar no blog!
Não vou prometer nada, mas espero blogar mais.
Fui questionado sobre quais as ferramentas para desenvolvimento de software desktop para Linux. Quem fez pergunta era um programador Delphi.


Para quem trabalha com Delphi, existe o compilador freepascal e GNU Pascal Compiler.
Também tem o Lazarus que é uma IDE inspirada no Delphi.
Quem trabalha com Delphi normalmente utiliza o Firebird. O Firebird também pode
ser instalado no Linux.
Também tem o MySQL que é um banco de dados muito difundido e o PostgreSQL que é um banco menos difundido, porém poderoso.

Agora, se você está realmente querendo mudar, Java é a melhor opção de desenvolvimento para Linux, na minha opinião.
Tem um ótimo IDE free, o NetBeans, que se conecta em praticamente todos os databases, graças a arquitetura do JDBC de Java.

Outra ferramenta que vem ganhando bastante espaço em desenvolvimento desktop para Linux é o PHP-GTK. O PHP
é uma linguagem já muito utilizada para desenvolvimento web e com extensa gama de APIs para conexão nativa aos bancos de dados mais utilizados no mundo. Com essa extensão, ficou fácil o programador que já conhece PHP também desenvolver para desktop.

Não poderia deixar de citar o projeto MONO. Não o conheço muito, mas pelo que tenho lido, é uma ótima opção de desenvolvimento utilizando uma plataforma parecida com o .NET da Microsoft. O Sharp Develop é uma ótima IDE gratuita.
Seguindo essa linha, há o Real Basic, HBasic e Gambas, para programadores Visual Basic.
Certamente há mais opções como Python, QT, C, C++, Jython, Tcl/Tk , JRuby, entre outras.


Abraços e até o próximo post