Hi,

Looks like you have two different problems...:

Your ALTER SESSION command is not correct, first you do not need commas in
this command, second and worse ALTER SESSION doe not support to set
NLS_CHARSET which is an environment only variable.

You should try to use the NLS_LANG env variable which works at the client as
well as the server level. The syntax is NLS_LANG =
language_territory.charset
So on you Linux box this should be something like: setenv NLS_LANG
AMERICAN_AMERICA.WE8ISO8859P1

Here under a part of Oracle manual about that:

<snip> This feature implicitly determines the language environment of the
database for each session. An ALTER SESSION statement is automatically
executed when a session connects to a database to set the values of the
database parameters NLS_LANGUAGE and NLS_TERRITORY to those specified by the
language and territory arguments of NLS_LANG. If NLS_LANG is not defined, no
ALTER SESSION statement is executed.
When NLS_LANG is defined, the implicit ALTER SESSION is executed for all
instances to which the session connects, for both direct and indirect
connections. If the values of NLS parameters are changed explicitly with
ALTER SESSION during a session, the changes are propagated to all instances
to which that user session is connected. </snip>

Dominique




-----Original Message-----
From: Mark Woods [mailto:[EMAIL PROTECTED]]
Sent: Thursday, March 29, 2001 3:38 PM
To: CF-Talk
Subject: Oracle drivers and 8bit (or multibyte) characters

Hi,

I've been having some trouble with a simple content management system
written in CF, running on RedHat Linux with Apache and connecting to an
Oracle 8i database.

When an 8bit character (character with code between 128 and 255 inclusive)
is added using one of the web forms, it's gets dropped to the 7bit ASCII
range. The Merant ODBC driver and the Oracle 80 Native driver both drop 128
from the 8bit character codes, e.g. chr(233), eacute, becomes chr(105), i.
I have worked around this through a combination of using HTMLEditFormat and
having some custom character code translations, but it is not ideal as this
database may be used to publish to print again in the future (ok, I can
un-escape characters, but why should I need to?).

I have tried using the Oracle ALTER SESSION statement at the start of
transactions to try and change the NLS_LANGUAGE, NLS_TERRITORY and
NLS_CHARSET environment variables for the connection, but I think I may
have the syntax wrong as I'm getting a "missing or invalid option" error.
I've included my statement below, if anyone knows what's wrong, please let
me know.

Has anyone else experienced this? Is there a workaround? Can I force the
drivers to send a correct ALTER SESSION statement when opening a
connection? Should this be necessary, i.e. is there something amiss with
the Oracle DBMS config that connecting clients are using the default Oracle
charset of 7bit ASCII rather than the charset which has been set on the
server, ISO-8859-1 (AFAIK using the NLS_LANG environment variable).

Thanks

Mark


now, that alter session statement:
-----------------------------------
ALTER SESSION
        SET NLS_LANGUAGE = 'AMERICAN',
                NLS_TERRITORY = 'AMERICA',
                NLS_CHARSET = 'WE8ISO8859P1'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm

Archives: http://www.mail-archive.com/[email protected]/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists

Reply via email to