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:
- <?php
- /**
- * MenuItem Widget
- *
- * @version 1.0
- * @package widget_gtk
- * @subpackage general
- * @author Pablo Dall'Oglio
- * @copyright Copyright (c) 2006-2012 Adianti Solutions Ltd. (http://www.adianti.com.br)
- * @license http://www.adianti.com.br/framework-license
- */
- class TMenuItem extends GtkImageMenuItem
- {
- private $label;
- private $action;
- private $image;
- /**
- * Class Constructor
- * @param $label The menu label
- * @param $action The menu action
- * @param $image The menu image
- */
- public function __construct($label, $action, $image = NULL)
- {
- //ADICIONADO
- ini_set ("php-gtk.codepage", "ISO8859-1" );
- parent::__construct(utf8_decode($label)); // converts into ISO
- parent::set_image(null);
- if (OS=='WIN')
- {
- parent::set_border_width(3);
- }
- $this->label = $label;
- $this->action = $action;
- $this->image = $image;
- if (file_exists($image))
- {
- parent::set_image(GtkImage::new_from_file($image));
- }
- $inst = TApplication::getInstance();
- if ($inst instanceof TApplication)
- {
- parent::connect_simple('activate', array($inst, 'run'), $action);
- }
- }
- /**
- * Returns the item's label
- */
- public function getLabel()
- {
- return $this->label;
- }
- /**
- * Returns the item's action
- */
- public function getAction()
- {
- return $this->action;
- }
- /**
- * Returns the item's image
- */
- public function getImage()
- {
- return $this->image;
- }
- /**
- * Define the submenu for the item
- * @param $menu A TMenu object
- */
- public function setMenu(TMenu $menu)
- {
- parent::set_submenu($menu);
- }
- }
- ?>
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