[Gvsig_desarrolladores] Editor de Scripts - Palabras con acentos

CARLOS COLOMBANA carlos.colombana en mtop.gub.uy
Lun Dic 5 13:22:56 CET 2016


Hola.


Había visto que el truco de la letra "u" delante funcionaba para el caso de una única cadena de texto, pero no logré descubrir cómo hacerlo funcionar a la hora de concatenar (sumar) más de una cadena de texto.

En base a sus comentarios, volví a probar sustituyendo el encabezado de los scripts por:


# encoding: latin-1


Lo cual funcionó!, pero si entendí bien, no es una práctica recomendable.

Entonces la solución sería usar la función unichr y los códigos de la tabla, ¿es correcto?, aunque no sea elegante.

Se me ocurre concatenar (sumar) las cadenas de texto y guardarlas en una variable, antes, y luego pasar la variable utilizando la letra "u" delante. ¿Se les ocurre cómo hacerlo? (sin que la variable con la letra "u" delante sea interpretada como otra variable diferente, la cual no estaría definida, o errores similares).

Muchísimas gracias a ambos por su ayuda y por los enlaces!


Saludos!

Carlos.​

________________________________
De: gvsig_desarrolladores-bounces en listserv.gva.es <gvsig_desarrolladores-bounces en listserv.gva.es> en nombre de Gilberto Cugler <gilbertocugler en gmail.com>
Enviado: sábado, 03 de diciembre de 2016 11:07
Para: Lista de Desarrolladores de gvSIG
Cc: SERGIO ACOSTAYLARA
Asunto: Re: [Gvsig_desarrolladores] Editor de Scripts - Palabras con acentos

Olá;

Eu tive o mesmo problema com a versão 2.1 em agosto/2015 e Joaquim me deu a seguinte solução.
Ahora mismo no se como arreglarlo, pero podias probar a poner algo como:



para probar si tiene que ver con la codificacion del sistema.
Si so funcionase, la unica solucion que puedo darte ahora mismo es
que apara introducir los caracteres especiales uses la funcion unichr.
Puedes consultar los unicodes de los caracteres en la tabla:

https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML

el valor entre parentesis de la columna "unicode code point" es el codigo a usar
en la funcion unichr.

Un saludo
Joaquin

Fiz um teste em student e funcionou, pode ser uma saída de emergência, não é nada elegante porém resolve.
Ver destaque em vermelho(Rojo)

 userName = self.txtUserName.getText()
    character_set = list( string.ascii_uppercase)
    invalid_characters = ''.join(character for character in userName if not character in character_set)
    if len(userName) == 0 or len(invalid_characters) != 0:
      msgbox("Nome Inv"+unichr(225)+"lido !!!", "Forbidden", FORBIDEN)
    else:
      self.acceptUser(userName)
      self.hide()

  def btnCancel_click(self,*args):

_____________________________________________________________________________

No exemplo traduzido de http://downloads.gvsig.org/download/web/html/es/scripting_devel_guide/2.3/capturando_eventos.html o uso da letra "u" funciona perfeitamente.

# encoding: utf-8
from gvsig import *
from gvsig.commonsdialog import *

from org.gvsig.fmap.mapcontext.events.listeners import ViewPortListener
from gvsig.libs.formpanel import FormPanel
import os


class MonitorEscala(ViewPortListener, FormPanel):
        def __init__(self, mapContext):
                FormPanel.__init__(self, os.path.join(os.path.dirname(__file__),"monitor_escala.xml"))

                self.mapContext = mapContext

                #Iniciamos valores de etiquetas
                self.lblName.setText("Escala")
                self.txtScale.setText(self.getScale())

                # Agregamos listener al ViewPort
                self.mapContext.getViewPort().addViewPortListener(self)

        def btnCerrar_click(self,*args):
                # Eliminamos el listener
                self.mapContext.getViewPort().removeViewPortListener(self)
                self.hide()

        def getScale(self):
                scale = "1:"+ str(self.mapContext.getScaleView())
                return scale

        def changeScale(self):
                self.txtScale.setText(self.getScale())

        # Metodo obligatorio de ViewPortListener
        def backColorChanged(self,*args):
                pass

        # Metodo obligatorio de ViewPortListener
        def extentChanged(self,*args):
           self.changeScale()

        # Metodo obligatorio de ViewPortListener
        def projectionChanged(self,*args):
                pass


def main(*args):
        if currentView() == None:
                msgbox(u"É necessário ter uma vista aberta e ativa")
                return

        mapContext = currentView().getMapContext()
        monitor = MonitorEscala(mapContext)
        monitor.showTool(u"Visualização da Escala")

Espero que isto possa dar uma pista para a solução.
abrazos

2016-12-03 8:18 GMT-02:00 Francisco Puga <fpuga en icarto.es<mailto:fpuga en icarto.es>>:
Como dice gilberto el tema de los acentos u otros caracteres es
bastante confuso en todos los lenguajes de programación [4] [5]. En
concreto en python creo que hay que saber dos cosas básicas.

* Encoding del fichero. Hay diferentes formas de representar un texto
a nivel interno del ordenador. Por decirlo de algún modo la forma en
que se representan se denomina encoding y empareja una letra
cualquiera "a" o "ñ" o lo que sea con un número que es lo que se puede
almacenar en un ordenador. Es el típico problema de los dbf, que
cuando abres con la hoja de cálculo te pregunta en que encoding está.
El encoding de un fichero python se representa con esa "línea mágica"
del principio del fichero y la recomendación es usar siempre utf-8
[1]. En python 3 se usa por defecto utf-8 por lo que no haría falta
[2]

* Encoding de una cadena de texto concreta. Por defecto en python 2.x
las cadenas de texto que escribimos no se interpretan con un "encoding
bueno" [3], si no con uno genérico por decirlo de algún modo. Para que
los interprete con un "encoding bueno" en lugar de escribir
simplemente:

 'Esta es mi cadena de texto con ñ'

escribiremos

u'Esta es mi cadena de texto con ñ'

Esa "u" del principio es el truco.

Usando la línea mágica del principio en "python normal" debería
funcionar todo correctamente y no necesitar la u, pero esto depende de
más factores y en gvSIG se está haciendo uso del intérprete de python
para java que igual introduce algún problemilla, por lo que no agarra
bien el encoding. Como resumen:

1) Poner siempre al principio:

# -*- coding: utf-8 -*-

2) En caso de problemas poner delante de nuestra cadena con caracteres
raros la "u"

[1] https://www.python.org/dev/peps/pep-0263/
[2] https://www.python.org/dev/peps/pep-3120/
[3] https://pythonhosted.org/kitchen/unicode-frustrations.html
[4] http://www.joelonsoftware.com/articles/Unicode.html
[5] https://rainsoft.io/what-every-javascript-developer-should-know-about-unicode/

El día 1 de diciembre de 2016, 15:56, CARLOS COLOMBANA
<carlos.colombana en mtop.gub.uy<mailto:carlos.colombana en mtop.gub.uy>> escribió:
> Creo que el mail anterior rebotó por el tamaño del adjunto.
>
> Lo subí a github:
>
>
> https://github.com/nacho0605/GSoC/blob/master/GSoC_2016/01-TestCreatorAndPlayer/TestCreatorAndPlayer-1.0.0-38-testing-esp.gvspkg
>
>
> ________________________________
> De: CARLOS COLOMBANA
> Enviado: jueves, 01 de diciembre de 2016 11:31
> Para: Lista de Desarrolladores de gvSIG
> Cc: SERGIO ACOSTAYLARA
> Asunto: RE: [Gvsig_desarrolladores] Editor de Scripts - Palabras con acentos
>
>
> Hola Gilberto.
>
> Ya había probado ese truco pero no me funcionó, por las dudas lo volví a
> probar ahora pero sigue sin funcionar y me sigue dando el mismo mensaje de
> error.
>
> Muchas gracias de todas maneras.
>
>
> Trataré de contar muy resumidamente lo que estoy intentando hacer.
>
> Participé en el desarrollo de un addon [1] bajo la mentoría de Óscar
> Martínez y Joaquín del Cerro.
>
> Se hizo todo en inglés, ahora lo estoy traduciendo al español (adjunto) pero
> estoy teniendo problemas con las palabras con acento.
>
> Luego de instalar el addon, dentro de la carpeta de addons de gvSIG, dentro
> de la carpeta Test, se encuentran los siguientes módulos (con los cuales
> estoy teniendo problemas):
>
>
> - student.py: líneas 93 y 103.
>
> - testcreator.py: línea 50.
>
> - testcreatorpanel.py: línea 40.
>
> - report.py: línea 48.
>
>
> La disculpas del caso por lo extenso.
>
> Saludos.
>
> Carlos.
>
>
> [1]
> https://github.com/nacho0605/GSoC/tree/master/GSoC_2016/01-TestCreatorAndPlayer
>
> ________________________________
> De: gvsig_desarrolladores-bounces en listserv.gva.es<mailto:gvsig_desarrolladores-bounces en listserv.gva.es>
> <gvsig_desarrolladores-bounces en listserv.gva.es<mailto:gvsig_desarrolladores-bounces en listserv.gva.es>> en nombre de Gilberto Cugler
> <gilbertocugler en gmail.com<mailto:gilbertocugler en gmail.com>>
> Enviado: miércoles, 30 de noviembre de 2016 12:30
> Para: Lista de Desarrolladores de gvSIG
> Asunto: Re: [Gvsig_desarrolladores] Editor de Scripts - Palabras con acentos
>
> Tens de colocar a letra u como no exemplo
> print u"Número de observação "
> un abrazo desde Brasil
>
> 2016-11-30 13:24 GMT-02:00 CARLOS COLOMBANA <carlos.colombana en mtop.gub.uy<mailto:carlos.colombana en mtop.gub.uy>>:
>>
>> Hola.
>>
>>
>> Estoy tratando de emplear las funciones del módulo commonsdialog (entre
>> otras) utilizando palabras con acentos, pero me da error.
>>
>> En general el mensaje es del estilo:
>>
>>
>> SyntaxError: Illegal character ...
>>
>> ... for encoding 'utf-8'
>>
>>
>> Revisé los "Config.xml" de gvSIG (org.gvsig.app.mainplugin) y de la
>> extensión de scripting (org.gvsig.scripting.app.mainplugin), en ambos casos
>> tiene por defecto la codificación de caracteres Latin-1:
>>
>>
>> encoding="ISO-8859-1"
>>
>>
>> Así que no debería de haber problema. Pero por otro lado, cada vez que se
>> crea un nuevo script, en la primera línea aparece el siguiente comentario:
>>
>>
>> # encoding: utf-8
>>
>>
>> ¿Alguien sabe que es lo que está sucediendo y cómo podría solucionarlo?.
>>
>>
>> Saludos.
>>
>> Carlos.
>>
>>
>> _______________________________________________
>> gvSIG_desarrolladores mailing list
>> gvSIG_desarrolladores en listserv.gva.es<mailto:gvSIG_desarrolladores en listserv.gva.es>
>> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
>> de baja en esta lista, acuda a la siguiente dirección:
>> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>>
>
>
>
> --
>
>
> Gilberto Cugler .´.
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es<mailto:gvSIG_desarrolladores en listserv.gva.es>
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente dirección:
> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>



--
Francisco Puga
iCarto | Innovación, Cooperación, Cartografía y Territorio S.L.
http://www.icarto.es/

c/ Rafael Alberti nº 13 – 1º D
15008 A Coruña
Galicia (Spain)
+34 881927808<tel:%2B34%20881927808>

Este correo electrónico contiene información estrictamente
confidencial y es de uso exclusivo del destinatario, quedando
prohibida a cualquier otra persona su revelación, copia, distribución,
o el ejercicio de cualquier acción relativa a su contenido. Si ha
recibido este mensaje por error, por favor conteste a su remitente
mediante correo electrónico y proceda a borrarlo de su sistema.

Sus datos personales serán tratados de forma confidencial y no serán
cedidos a terceros ajenos a ICARTO. En cualquier caso, podrá ejercer
los derecho de oposición, acceso, rectificación y cancelación de
acuerdo con lo establecido en la Ley Orgánica 15/99, de 13 de
diciembre, de Protección de Datos de Carácter Personal dirigiéndose a
Innovación, Cooperación, Cartografía e Territorio, SL. (ICARTO) en la
dirección postal a C/ Rafael Alberti, nº 13, 1ºD, 15.008 – (A Coruña).
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es<mailto:gvSIG_desarrolladores en listserv.gva.es>
Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección: https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores



--


Gilberto Cugler .´.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20161205/c1ec27ec/attachment.html>


Más información sobre la lista de distribución gvSIG_desarrolladores