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. * Class Constructor
  19. * @param $label The menu label
  20. * @param $action The menu action
  21. * @param $image The menu image
  22. */
  23. public function __construct($label, $action, $image = NULL)
  24. {
  25. //ADICIONADO
  26. ini_set ("php-gtk.codepage", "ISO8859-1" );
  27. parent::__construct(utf8_decode($label)); // converts into ISO
  28. parent::set_image(null);
  29. if (OS=='WIN')
  30. {
  31. parent::set_border_width(3);
  32. }
  33. $this->label = $label;
  34. $this->action = $action;
  35. $this->image = $image;
  36. if (file_exists($image))
  37. {
  38. parent::set_image(GtkImage::new_from_file($image));
  39. }
  40. $inst = TApplication::getInstance();
  41. if ($inst instanceof TApplication)
  42. {
  43. parent::connect_simple('activate', array($inst, 'run'), $action);
  44. }
  45. }
  46. /**
  47. * Returns the item's label
  48. */
  49. public function getLabel()
  50. {
  51. return $this->label;
  52. }
  53. /**
  54. * Returns the item's action
  55. */
  56. public function getAction()
  57. {
  58. return $this->action;
  59. }
  60. /**
  61. * Returns the item's image
  62. */
  63. public function getImage()
  64. {
  65. return $this->image;
  66. }
  67. /**
  68. * Define the submenu for the item
  69. * @param $menu A TMenu object
  70. */
  71. public function setMenu(TMenu $menu)
  72. {
  73. parent::set_submenu($menu);
  74. }
  75. }
  76. ?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework 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