Power Builder - Cambiar encoding de utf-8 a iso-8859-1

 
Vista:
sin imagen de perfil

Cambiar encoding de utf-8 a iso-8859-1

Publicado por nicolas (6 intervenciones) el 02/11/2009 12:15:42
Hola a todos. Tengo en la bd Sybase una tabla la cual esta guardada con la codificacion UTF-8 pero el problema son los acentos y las 'ñ' como es sabido. Quisiera saber si existe la posibilidad de cambiar e encoding en la base de datos o en el script en donde tengo que presentar la informacion utilizando alguna funcion que haga la conversion.

Desde ya muchas gracias a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cambiar encoding de utf-8 a iso-8859-1

Publicado por miguell (153 intervenciones) el 02/11/2009 18:57:25
Hola,

no soy un experto de base de datos (ni de sybase) pero voy a intentar a ver si puedo darte alguna idea:

Para empezar, creo que tus acentos y ñ's ya las has perdido. Una vez mal grabadas ya no se convertirán al cambiar el encoding ( ¿me equivoco? ).

el primero problema que tengo es si se puede definir el encoding a nivel de tabla o a nivel de database???

con cuál bd de sybase estás? ASA, ASE, anywhere??

con MySql creo que sí es posible conseguirlo con un ALTER TABLE pero no es tu caso, valdría la pena buscar en algún manual si con "Sybase" eso es posible.
( me parece que como mucho puedes hacer un "alter DATABASE" y no "table" para conseguir tu fin.

si buscas un buen manual de sybase anywhere 11 (en 1 sola línea):

http://www.ianywhere.com/developer/product_manuals/sqlanywhere/1101/en/pdf/dbreference_en11.pdf

busca "create database" y busca la sección 'encoding' y 'iso-8859-1' en el pdf de 1000 y pico páginas.
Con sqlanywhere parece que sólo se puede aplicar el encoding a la base de datos entera y no a nivel de tabla ... (por lo que veo hasta ahora).

si usas sqlanywhere, usa la utilidad "Sybase central" y cuando haces botón derecho del ratón sobre la base de datos tendrás varias opciones que te puedan interesar:
puedes usar "create custom collation" (tiene que ver con el orden según set de carácteres. no sé si eso te vale para algo pero salen los ISO- ... ).
también puedes hacer un 'unload database' que te permite descargar y cargar los datos de una base de datos a otra.

sino:
------
lo que me surge es
1) exportar todos los datos a txt (sin nombre de columnas), desde un database painter: 'file', 'save rows as' y elegir 'text' (hay opción de codificación alli también)
2) crear la tabla en Sybase de nuevo con el encoding que necesitas. No sé como es eso al no saber la versión de bd que estás usando.
3) convertir el txt exportado si lo consigues con linux o windows, un conversor que encontré:
bájate esta (las dos líneas son una sóla):
http://download.cnet.com/Character-Set-Converter/3000-7241_4-10542412.html?tag=mncol

4) importar los datos de nuevo a tu tabla nueva

si prefieres Linux para convertir el archivo txt:
--------
vi en algún sitio que con Linux se puede convertir Utf-8 A ISO-8859:
(creo que tienes que cambiar el --from-code con el --to-code):
Convert a iso-8859-1 charset file into a utf-8 charset file using standard Linux tools.
The solution – using bash shell and using Linux – of course:

iconv --from-code=ISO-8859-1 --to-code=UTF-8 iso.txt > utf.txt

(encontrado en
http://mediakey.dk/~cc/howto-convert-text-file-from-utf-8-to-iso-8859-1-encoding/
)

suerte,
miguel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Cambiar encoding de utf-8 a iso-8859-1

Publicado por nicolas (6 intervenciones) el 03/11/2009 11:24:30
Hola Miguel. Antes de todo gracias por tu tiempo y por tu ayuda.

Estoy usando la bd de Sybase Anywhere. Es cierto, ya perdi los acentos y las ´ñ´.

Pero lo raro es que volvi a crear otra bd con el encoding iso y volvi a cargar los datos pero el resultado es el mismo. Lo que voy a intentar hacer es realizar la conversion en MySql y de alli migrar los datos ya con el encoding ISO a Sybase a ver que pasa.

Muchas gracias por la ayuda y por los link que me pasaste. Fueroon de mucha utilidad.

Un abrazo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar encoding de utf-8 a iso-8859-1

Publicado por miguell (153 intervenciones) el 03/11/2009 13:48:27
de nada,

a ver si te va a faltar algún parche de la base de datos?
lo puedes bajar de www.sybase.com ( mira los EBF's)

saludos,
miguel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar encoding de utf-8 a iso-8859-1

Publicado por miguell (153 intervenciones) el 03/11/2009 13:56:28
de todas formas no tengo tan claro que el problema sea que la tabla esté en utf-8.

¿no tendrá que tener con el encoding de lo que estás importando?

bueno ya dirás algo cuando lo tengas solucionado, tengo curiosidad.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Cambiar encoding de utf-8 a iso-8859-1

Publicado por nicolas (6 intervenciones) el 03/11/2009 14:31:44
Claro. Yo tengo una base de datos en mysql bajo el encoding utf-8. Y la migre mediante un programita que hice en delphi a Sybase. La migracion se hizo perfectamente. El problema era que me guardo los registros tal cual estaban en Mysql(utf-8). Es por ello que voy a intentar modificar en ecoding en Mysql y remigrar la bd a Sybase ya convertida. Lo que pasa es que para ahorrame todo este trabajo queria saber si existe alguna manera de hacerlo directamente en Sybase.

Cuando lo resuelva te comento
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar encoding de utf-8 a iso-8859-1

Publicado por miguell (153 intervenciones) el 04/11/2009 09:17:36
Hola,

Lo único que he visto es que con el "Sybase Central" puedes conectarte a una base de datos SqlAnywhere (por ejemplo) y luego con botón derecho sobre la base de datos puedes decir "Migrate Database". Eso te debería permitir importar bases de datos que no sean Sybase en la que estás usando en ese momento.

no lo he probado nunca. Cuando le das a la opción tienes que dar un nombre de servidor (cualquier cosa supongo) y luego te pide el tipo de base de datos de origen. Yo intentaría con MySQL ya que no me sale. Tendrás que ir por odbc supongo.

suerte,
miguel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar