2016-05-14 21 views
0

JavaとPHPのアプリケーションが同じ問題を抱えているため、それがOperative Systemだと私は考えます。 私はこの手順からなる:まずOracle for Windowsの文字はどのように修正されますか?

を:

Iは、次の行でNLS_CHARACTERSETを変更:OUTPUTは、自分のコンピュータを形成

conn /as sysdba 
shutdown immediate; 
startup mount; 
ALTER SYSTEM ENABLE RESTRIcted session; 
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; 
alter database open; 
UPDATE PROPS$ SET VALUE$ = 'AL32UTF8' WHERE NAME = 'WE8MSWIN1252'; 
commit; 
shutdown immediate; 
startup; 

SQL> SELECT * from NLS_DATABASE_PARAMETERS WHERE parameter 
IN ('NLS_LANGUAGE', 'NLS_TERRITORY', 'NLS_CHARACTERSET'); 

PARAMETER VALUE 
—————————— —————————————- 
NLS_LANGUAGE AMERICAN 
NLS_TERRITORY AMERICA 
NLS_CHARACTERSET AL32UTF8 

後た。AMERICAN、AMERICA、AL32UTF8、それぞれ

1チュートリアル:

NLS_LANGの値を決定します。データウェアハウスデータベースに 、コマンドを実行

SELECT * FROM V$NLS_PARAMETERS 

はフォーマット[NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET]であるNLS_LANG値を書き留め。 例:American_America.UTF8 Windowsの場合: コントロールパネル>システムにナビゲートし、詳細設定タブをクリックします。環境変数をクリックします。 「システム変数」セクションで、「新規」をクリックします。 「変数名」フィールドに、NLS_LANGと入力します。 「変数値」フィールドに、手順1で戻されたNLS_LANG値を入力します。 NLS_LANG値の書式は[NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET]である必要があります。 例:American_America.UTF8

2チュートリアル: HKEY_LOCAL_MACHINE> SOFWTARE> Oracle> KEY_XEでREGEDITに入力し、value_ American_America.AL32UTF8を使用してNSLANGファイルを変更しました。

ノートパソコンを再起動しても、同じ問題があります。一度にすべての文字が他の文字に変わったということだけです。

+1

データベースを破損する前にバックアップしていますか?データ・ディクショナリを直接更新することは非常にサポートされておらず、理解していない副作用がほとんどあります。ステップ1は、この変更を行う前にデータベースバックアップをリストアすることです。 –

+0

問題ありません。あなたが望むなら私はアンインストールできます –

答えて

0

まず、Justin Caveが提案したように、データベースを復元(または破棄)する必要があります。一方、UPDATE PROPS$ SET ... WHERE NAME = 'WE8MSWIN1252';WE8MSWIN1252という名前のパラメータがないので、0行を更新する必要があるため、おそらくあなたには幸運がありました。

通常、アプリケーションの特性(この場合はJavaおよび/またはPHP設定)に従ってNLS_LANGを設定すれば十分です。環境変数またはレジストリのいずれかとして実行できます。しかし、javaとPHPがレジストリ設定を読み込むかどうか、あるいは単に環境変数に依存しているかどうかはわかりません。

32ビットのOracle Clientをインストールした場合は、レジストリキーHKEY_LOCAL_MACHINE>SOFWTARE>Wow6432Node>Oracle>KEY_XE -> TNS_ADMINもチェックしてください。

詳細を取得するには、この答えを参照してください:OdbcConnection returning Chinese Characters as "?"

+0

ありがとうございます。私は、Windowsコンソール(SQLコマンドライン)が文字の入力に問題があることを発見しました。 AL32UTF8とオプションWE8MSWIN1252でもすべての設定が正しいため、問題でした。 Linuxでは入力タイプを定義していますが、Windowsでは定義されていません。 –

0

私はOTNでNLS_LANG(Oracle Technology Networkの)について投稿し、ここにリンクがあります。 https://community.oracle.com/thread/3907535?start=0&tstart=0あなたが役に立つかもしれません。

赤いフラグ:ローカルNLS_LANGキャラクタ・セット・コンポーネントをローカル・マシン用にデータベースで使用されるキャラクタ・セットに変更しようとしているのはなぜですか?もしあなたが「この質問でmathguyが何を意味するのか? - 私がリンクしているノートを読んだり、時間と傾きがある場合は、 "元の" - NLS_LANG FAQ http://www.oracle.com/technetwork/products/globalization/nls-lang-099431.html

関連する問題