Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Character Set / Encrypted text question

Re: Character Set / Encrypted text question

From: Bjørn Engsig <bjorn_at_miracleas.dk>
Date: Fri, 07 Mar 2003 02:43:59 -0800
Message-ID: <F001.00562F14.20030307024359@fatcity.com>


As I noted in my other reply to this thread, you should NEVER use any character datatype (char, varchar, varchar2, clob and their 'N' versions plus long) to store any sort of binary data. If your data is binary, it must be stored in one of the binary datatypes, RAW, BLOB (or LONG RAW in historic versions)

For some really strange reason, it seems that Oracle no longer thinks people need the RAW datatype; the documentation (as of 8.1 at least) says it is for 'backward compatibility only' apparently because you should use BLOB in stead. Although the semantics for accessing BLOB data are now (as of 9i) the same as for raw, I actually strongly disagree with the change to make RAW a second class data type: There can be very legitimate reasons why you want to store small to medium sized amounts of binary data as it is done in RAW (which really is a variable length datatype with max 2000 bytes); in particular such data can be indexed, which is not the case for BLOB.

/Bjørn.

david davis wrote:

> Mark,
>
> I have seen this issue here where an application scrambles/encrypts
> data into a character field varchar2 but it doesn't work right when
> moved to another environment.
>
> The source environment was using NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
> but the target was using NLS_LANG=AMERICAN_AMERICA.US7ASCII. Going
> from an 8-bit characterset to a 7-bit characterset causes problems
> where the byte code value should have been properly represented by 8
> bits and not 7.
>
> eg. VARCHAR2(15) field contains data ÚØÝ (dec: 218, 216, 221) comes
> out as U?Y when converted to US7ASCII (see SQL CONVERT function).
>
> Another app I use here does work, but it stores the values in Hex not
> with the character representation.
>
> Options:
>
> Used 8 bit characterset on database.
> Store data as hex value eg. Passwords stored in Oracle table
> (dba_users [sys.user$]) which is a VARCHAR2(30) field.
> User RAW fields.
>
> Converting the database characterset requires a database recreation.
>
> David
>
>
>
>
>
>> From: "Mark Richard" <mrichard_at_transurban.com.au>
>> Reply-To: ORACLE-L_at_fatcity.com
>> To: Multiple recipients of list ORACLE-L <ORACLE-L_at_fatcity.com>
>> Subject: Character Set / Encrypted text question
>> Date: Wed, 05 Mar 2003 19:28:46 -0800
>>
>> Dear List,
>>
>> I have a question for the character set guru's out there...
>>
>> We are trying to store encrypted text from a Forte application into a
>> varchar2 column in Oracle (8.1.7.4). When Forte retrieves the string a
>> couple of the characters appear to have changed value. I assume we are
>> experiencing some kind of character set limitation. Does anyone have
>> any
>> ideas about how we might work around this issue? I have included the
>> NLS
>> section from out init.ora section for reference.
>>
>> The only workaround we can think of is converting the string to hex
>> values
>> and reassembling these into a long string and then storing that result.
>> Does this sound reasonable (assuming it's not a simple character set
>> change).
>>
>> Please keep the help simple - I have never had to be concerned with
>> character sets before and don't really understand all of the
>> terminology.
>>
>> # NLS settings
>> nls_date_format = "DD-MON-RRRR"
>> nls_sort = BINARY
>> nls_language = AMERICAN
>> nls_numeric_characters = ".,"
>>
>> Thanks in advance,
>>
>> Mark.
>> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<---->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>
>> Privileged/Confidential information may be contained in this message.
>> If you are not the addressee indicated in this message
>> (or responsible for delivery of the message to such person),
>> you may not copy or deliver this message to anyone.
>> In such case, you should destroy this message and kindly notify the
>> sender
>> by reply e-mail or by telephone on (61 3) 9612-6999.
>> Please advise immediately if you or your employer does not consent to
>> Internet e-mail for messages of this kind.
>> Opinions, conclusions and other information in this message
>> that do not relate to the official business of
>> Transurban City Link Ltd
>> shall be understood as neither given nor endorsed by it.
>> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<---->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>
>>
>> --
>> Please see the official ORACLE-L FAQ: http://www.orafaq.net
>> --
>> Author: Mark Richard
>> INET: mrichard_at_transurban.com.au
>>
>> Fat City Network Services -- 858-538-5051 http://www.fatcity.com
>> San Diego, California -- Mailing list and web hosting services
>> ---------------------------------------------------------------------
>> To REMOVE yourself from this mailing list, send an E-Mail message
>> to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
>> the message BODY, include a line containing: UNSUB ORACLE-L
>> (or the name of mailing list you want to be removed from). You may
>> also send the HELP command for other information (like subscribing).
>>
>
>
> _________________________________________________________________
> The new MSN 8: smart spam protection and 2 months FREE*
> http://join.msn.com/?page=features/junkmail
>

-- 
Bjørn Engsig, Miracle A/S
Member of Oak Table Network <http://www.oaktable.net>
Bjorn.Engsig@MiracleAS.dk - http://MiracleAS.dk



-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: =?ISO-8859-15?Q?Bj=F8rn_Engsig?=
  INET: bjorn_at_miracleas.dk

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).
Received on Fri Mar 07 2003 - 04:43:59 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US