Prev: Oracle Spatial SDO Aggregate Union fails with ORA-29913 ODCIAGGREGATEMERGE
Next: java.sql.SQLException: Data size bigger than max size for this type: 3991
From: sybrandb on 24 Jul 2008 13:21 On Thu, 24 Jul 2008 14:10:37 +0200, "�lvaro G. Vicario" <alvaroNOSPAMTHANKS(a)demogracia.com> wrote: >Is there any way to get an unmodified output from a certain table field >that I know contains (or it's supposed to contain) an Euro symbol so I >can check with a binary editor what numeric code it's actually using? Earlier in this thread you specified the characterset of the database is WE8ISO8859P1. This characterset doesn't have the euro. The P15 and MSWIN1252 have the euro at either 128 or 160. However, there are other differences between those two charactersets. -- Sybrand Bakker Senior Oracle DBA
From: Álvaro G. Vicario on 25 Jul 2008 02:17 sybrandb(a)hccnet.nl escribi�: >> Is there any way to get an unmodified output from a certain table field >> that I know contains (or it's supposed to contain) an Euro symbol so I >> can check with a binary editor what numeric code it's actually using? > > Earlier in this thread you specified the characterset of the database > is WE8ISO8859P1. > This characterset doesn't have the euro. Despite that, it seems they did insert euros. In my web pages it displays as "�" but through the context it's obvious it's supposed to be the euro symbol. So, no matter the actual charset, it seems their apps treat the data as MSWIN1252 or WE8ISO8859P15. I believe I could connect as WE8ISO8859P15 and let Oracle do the conversion but if actual data does not use the charset it's supposed to, the conversion will be meaningless. I've done further testing and I'd dare say data is MSWIN1252: the only way I can see the euro symbol is connecting as WE8ISO8859P1 and then doing a client-side conversion from cp1252 to iso-8859-15 with Iconv. Again, thank you for your hints. -- -- http://alvaro.es - �lvaro G. Vicario - Burgos, Spain -- Mi sitio sobre programaci�n web: http://bits.demogracia.com -- Mi web de humor al ba�o Mar�a: http://www.demogracia.com --
From: Laurenz Albe on 25 Jul 2008 03:00 "�lvaro G. Vicario" <alvaroNOSPAMTHANKS(a)demogracia.com> wrote: >>> Is there any way to get an unmodified output from a certain table field >>> that I know contains (or it's supposed to contain) an Euro symbol so I >>> can check with a binary editor what numeric code it's actually using? You could use the DUMP() function to see what is actually stored in the database. >> Earlier in this thread you specified the characterset of the database >> is WE8ISO8859P1. >> This characterset doesn't have the euro. > > Despite that, it seems they did insert euros. In my web pages it > displays as "�" but through the context it's obvious it's supposed to be > the euro symbol. So, no matter the actual charset, it seems their apps > treat the data as MSWIN1252 or WE8ISO8859P15. > > I believe I could connect as WE8ISO8859P15 and let Oracle do the > conversion but if actual data does not use the charset it's supposed to, > the conversion will be meaningless. I've done further testing and I'd > dare say data is MSWIN1252: the only way I can see the euro symbol is > connecting as WE8ISO8859P1 and then doing a client-side conversion from > cp1252 to iso-8859-15 with Iconv. If you can get Euro signs from a LATIN-1 database, it is an indication that you are a victim of the problem I mentioned upthread, namely that Oracle doesn't check your input if client and server character set are identical. You probably have the Euros stored as hex 0x80 if the client is a Windows machine (make sure with DUMP). You will get the 0x80 back as long as client and server character set stay the same, but there is no other setting for the client character set that will deliver anything meaningful. That is because you have bad data in your database, and they cannot be converted from LATIN-1 to anything. Essentially it is a case of user induced data corruption. You can either 1) stick with LATIN-1 on both server and client and pray that nobody will ever enter characters in a different encoding and that you will never have to access the database from a non-Windows system. 2) if you are sure that all bogus characters are actually WE8MSWIN1252, you could try to change the database character set. Yours, Laurenz Albe
From: joel garry on 25 Jul 2008 14:03
On Jul 24, 11:17 pm, "Álvaro G. Vicario" <alvaroNOSPAMTHA...(a)demogracia.com> wrote: > > I believe I could connect as WE8ISO8859P15 and let Oracle do the > conversion but if actual data does not use the charset it's supposed to, > the conversion will be meaningless. I've done further testing and I'd > dare say data is MSWIN1252: the only way I can see the euro symbol is > connecting as WE8ISO8859P1 and then doing a client-side conversion from > cp1252 to iso-8859-15 with Iconv. > > Again, thank you for your hints. > Also see the docs for csscan to scope the problem. Some problems are more easily fixed than others. If it turns out the only problem is the Euro, it could be a relatively simple update or games lying to exp/ imp. jg -- @home.com is bogus. That darn craigslist. http://ap.google.com/article/ALeqM5g1THE017WECuE2kGK_pKt14pefOgD924512O0 |