Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Problemas com codificação dos caracteres Olá pessoal! Eu utilizo windows e tenho enfrentado problemas com a codificação dos caracteres, o que resulta na queda do GTK2. Sim, eu já verifiquei o Code Page, também conheço as funções decode e iconv, que também já testei. Bom, a primeira vez que me deparei com esse problema foi quando botei o label "Configurações" no menu.xml. Somente consegui resolver esse problema a...
GF
Problemas com codificação dos caracteres  
Fechado
Olá pessoal! Eu utilizo windows e tenho enfrentado problemas com a codificação dos caracteres, o que resulta na queda do GTK2. Sim, eu já verifiquei o Code Page, também conheço as funções decode e iconv, que também já testei. Bom, a primeira vez que me deparei com esse problema foi quando botei o label "Configurações" no menu.xml. Somente consegui resolver esse problema adicionando no método construtor da classe o método ini_set ("php-gtk.codepage", "ISO8859-1" ). Alguma outra sugestão? Desde já muito obrigado! A classe ficou assim:

  1. <?php
  2. /**
  3.  * MenuItem Widget
  4.  *
  5.  * @version    1.0
  6.  * @package    widget_gtk
  7.  * @subpackage general
  8.  * @author     Pablo Dall'Oglio
  9.  * @copyright  Copyright (c) 2006-2012 Adianti Solutions Ltd. (http://www.adianti.com.br)
  10.  * @license    http://www.adianti.com.br/framework-license
  11.  */
  12. class TMenuItem extends GtkImageMenuItem
  13. {
  14.     private $label;
  15.     private $action;
  16.     private $image;
  17.     
  18.     /**
  19.      * Class Constructor
  20.      * @param $label  The menu label
  21.      * @param $action The menu action
  22.      * @param $image  The menu image
  23.      */
  24.     public function __construct($label$action$image NULL)
  25.     {
  26.         //ADICIONADO
  27.         ini_set ("php-gtk.codepage""ISO8859-1" ); 
  28.         
  29.         parent::__construct(utf8_decode($label)); // converts into ISO
  30.         parent::set_image(null);
  31.         if (OS=='WIN')
  32.         {
  33.             parent::set_border_width(3);
  34.         }
  35.         $this->label  $label;
  36.         $this->action $action;
  37.         $this->image  $image;
  38.         
  39.         if (file_exists($image))
  40.         {
  41.             parent::set_image(GtkImage::new_from_file($image));
  42.         }
  43.         $inst TApplication::getInstance();
  44.         if ($inst instanceof TApplication)
  45.         {
  46.             parent::connect_simple('activate', array($inst'run'), $action);
  47.         }
  48.     }
  49.    
  50.     /**
  51.      * Returns the item's label
  52.      */
  53.     public function getLabel()
  54.     {
  55.         return $this->label;
  56.     }
  57.     
  58.     /**
  59.      * Returns the item's action
  60.      */
  61.     public function getAction()
  62.     {
  63.         return $this->action;
  64.     }
  65.     
  66.     /**
  67.      * Returns the item's image
  68.      */
  69.     public function getImage()
  70.     {
  71.         return $this->image;
  72.     }
  73.     
  74.     /**
  75.      * Define the submenu for the item
  76.      * @param $menu A TMenu object
  77.      */
  78.     public function setMenu(TMenu $menu)
  79.     {
  80.         parent::set_submenu($menu);
  81.     }
  82. }
  83. ?>

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (1)


PD

Oi Guilherme,

Não é uma boa prática alterar configurações de ambiente dentro de classes que representam componentes. Sugiro um de dois caminhos:

1) Colocar o ini_set dentro do index.gtk.php, que é o arquivo de entrada da aplicação;
2) Alterar o arquivo C:php-gtk2php.ini, acrescentando:
php-gtk.codepage = ISO8859-1

Se você salvar todos os seus arquivos (.xml, .php) no que indicar no codepage, não será necessário fazer alterações como aquele utf8_decode(), ou seja, dá pra deixar a classe original mesmo ;-)

um abraço,
Pablo