Problema con acentos en modelo?

cancel
Showing results for 
Search instead for 
Did you mean: 
spilby
Active Member II

Problema con acentos en modelo?

Buenas,

seguimos afinando el modelo de datos en Alfresco 5.0… Nos encontramos que al insertar un nodo nos devuelve una excepción con esta información:

<blockcode>
Invalid property value:
   Node: workspace://SpacesStore/14gf6d15-9bd9-4dd9-9f37-e5ebd214ffa2
   Name: ejemplo.pdf
   Type: {own.model}own_type
   Property: {own.model}own_prop
   Constraint: 10120007 The value is not an allowed value: Sí
</blockcode>

Se produce justo en 5 de los metadatos que incluimos en el modelo con constraints cuyos valores contienen acentos. Así que imagino que falta configurar en algún sitio algo para que se permitan acentos en ese tipo de properties.

El xml del modelo empieza por un encoding UTF-8 y una de las constrains que contienen acentos está definida así:


<constraint name="example" type="org.alfresco.repo.dictionary.constraint.ListOfValuesConstraint">
   <parameter name="allowedValues">
      <list>
         <value></value>
         <value>Sí</value>
         <value>No</value>
      </list>
   </parameter>
   <parameter name="caseSensitive">
      <value>true</value>
   </parameter>
</constraint>


siendo luego la property:


<property name="own.model:own_prop" default="Sí" editVisible="true" createVisible="true" editable="true" inheritable="false" calculable="true">
    <title>Own Prop</title>
    <type>d:text</type>
    <mandatory>false</mandatory>
    <constraints>
        <constraint ref="example" />
    </constraints>
</property>


Los nombres los he simplificado a modo de ejemplo. El Alfresco está instalado en un Windows y ha cogido configuración en castellano, de la máquina.

Y en el alfresco-global.properties he añadido ?useUnicode=yes&characterEncoding=UTF-8 en db.url.

¿Qué hace falta para que funcionen los acentos? Estoy buscando pero no encuentro nada relacionado…
10 Replies
angelborroy
Alfresco Employee

Re: Problema con acentos en modelo?

¿Cómo has creado la base de datos?
Hyland Developer Evangelist
spilby
Active Member II

Re: Problema con acentos en modelo?

Es el postgres que viene con la instalación del Alfresco One. No he tenido que hacer nada en la BD… Cuando pasemos a los entornos de pre y producción usaremos Oracle, pero de momento para desarrollar tiramos con el postgres que viene por defecto.

Éstos son los valores de la BD

CREATE DATABASE alfresco
  WITH OWNER = alfresco
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'Spanish_Spain.1252'
       LC_CTYPE = 'Spanish_Spain.1252'
       CONNECTION LIMIT = -1;

Y si hago un SHOW client_encoding; en la BD me devuelve: UNICODE
angelborroy
Alfresco Employee

Re: Problema con acentos en modelo?

La base de datos está bien.

¿Cómo haces llegar el valor a ese campo? ¿Un cliente CMIS?
Hyland Developer Evangelist
spilby
Active Member II

Re: Problema con acentos en modelo?

Llamando a un java backed webscript, desde la API Java de Alfresco. Se inserta un documento en un nodo creado y algunos metadatos, y cuando va a ejecutar la transacción, dá la excepción que comentaba.

Es el mismo código java y el mismo modelo que usábamos en el anterior Alfresco que teníamos, y ahí sí funcionaba, por lo que entiendo que el código está bien. Y el caracter con acento lo veo también bien en el log, por lo que llega correctamente al Alfresco.

Por eso me huele que sea más un problema de configuración, que no permite setear properties con elementos de la lista que tengan acentos. Sólo ha cambiado la versión de Alfresco y SOLR, y que corre la hemos instalado en Windows en lugar de en Linux.

¿Quizás un problema con el customModel.xml que subo?

En el PSPad me pone que está en UTF-8 / DOS, mientras que uno de los samples de ejemplo de Alfresco están en UTF-8/ UNIX.

Cuando voy a alf_data/solr4/model/ y abro los xml que ahí aparecen, mi customModel.939609947.xml está en UNIX / UTF-8 y cualquier otro xml de los que tiene Alfresco, el facebook.publishingmodel, por ejemplo, está también en UNIX / UTF-8.

No sé si algo de eso puede influir. Precisamente si la BD está en UTF8 me cuadraría más que todos se generaran en UTF8, no en ANSI.
angelborroy
Alfresco Employee

Re: Problema con acentos en modelo?

Creo que ése puede ser el problema.

ANSI es un subconjunto de UTF-8, así que no debería haber problemas.

¿Diseñas el XML en Eclipse y tienes el workspace de Eclipse establecido a UTF-8?
Hyland Developer Evangelist
spilby
Active Member II

Re: Problema con acentos en modelo?

Nop, estos xml los he cambiado con el PSPad o el Notepad++.

He editado mi mensaje anterior, me había parecido ver en ANSI algunos ficheros pero no, están todos en UTF-8.

De hecho, si cambio mi customModel.xml y lo pongo como ANSI, cuando arranco no me crea los xml y me dá un error, así que he de hacerlo por narices en UTF8 para que me lo haga bien.

En resumen, todos los ficheros generados en el alf_data/solr4/model (el mío y los que ya vienen de Alfresco) estan en UTF8 y los del extensions también.

Algo sucede con los acentos de todas maneras, además de este error. Si elimino los metadatos que dan problemas, el webscript funciona sin darme ninguna excepción pero los acentos los pone mal. Por ejemplo, el título "Documentación pendiente de clasificar", lo veo en el share como "Documentación pendiente de clasificar".

En el campo idioma del nodo, en el antiguo Alfresco, pone: en_US. En esta nueva instalación pone es_ES. No sé si puede tener que ver con el problema del encoding. Hay algo que no está bien y lo veo todo en UTF-8, pero está claro que algo se me escapa… Smiley Surprised\
angelborroy
Alfresco Employee

Re: Problema con acentos en modelo?

Puedes probar esto con tus modelos: http://douglascrp.blogspot.com.br/2014/04/how-to-convert-properties-files-to-utf-8.html

También tienes una última respuesta aquí en el foro que puede interesarte: https://forums.alfresco.com/es/forum/usuário-alfresco/usando-alfresco/bulk-import-tool-error-de-lect...

En cuanto al Share, no hay problema, el problema está en los webscripts del Repo: están insertando mal los nombres en la base de datos. Si hemos descartado la configuración de la propia base de datos, quizá el problema esté en la configuración de "locale" de Java (que la toma directamente de la configuración del servidor).
Hyland Developer Evangelist
spilby
Active Member II

Re: Problema con acentos en modelo?

Buenas,

he probado de convertir los modelos pero pasa lo mismo. Confirmo que están en UTF-8.

Respecto al locale de Java, lo he cambiado como aquí explica: https://www.java.com/es/download/help/locale.xml, pero nada, sigue escribiendo el locale como es_ES.

También me he ido al server.xml y he añadido URIEncoding="UTF-8" al Connector.

He ido al tomcat/bin/setenv.bat y he añadido -Dfile.encoding=UTF-8 -Djava.file.encoding=UTF-8 -Duser.languaje=es -Duser.region=ES en el JAVA_OPTS

Pero nada, sigue ingresando mal los textos con los caracteres con acento.

He probado también de añadir una nueva propiedad forzando el idioma a en_US a ver qué pasa:


propiedad.put(QName.createQName("{http://www.alfresco.org/model/system/1.0}", "locale"), "en_US");


siendo propiedad un Map<QName, Serializable> que inserto en el createNode. Entiendo que esto debería haberme insertado el nodo en ese locale, pero veo que el campo idioma sigue valiendo es_ES.

Puedo mirar en BD si estos campos están ya con el acento mal puesto. ¿En qué tabla puedo encontrarlos? Porque las he mirado todas y no veo nada con datos de ese tipo, no sé si estarán codificados.
angelborroy
Alfresco Employee

Re: Problema con acentos en modelo?

Para consultar la base de datos, échale un vistazo a este post de Fegor: http://www.fegor.com/2014/08/entrando-por-la-puerta-de-atras-en.html
Hyland Developer Evangelist