ホームページ >php教程 >PHP开发 >Linux での Oracle の中国語文字化けの解決に関するいくつかの考え

Linux での Oracle の中国語文字化けの解決に関するいくつかの考え

高洛峰
高洛峰オリジナル
2016-12-15 16:46:572214ブラウズ

最近、Linux に Oracle 10gR2 をインストールした後、文字化けの問題に遭遇しました。以前ネットで調べて解決した後、今回も同じような問題に遭遇したので、真剣に考えました。テストに時間がかかりましたが、問題は解決しました。後で見つけられるように、私が遭遇した問題と解決策を記録します。

テスト環境は次のとおりです。 : VMware? Workstation 9.0.2 build-1031769 (注: VM は 32 ビットと 64 ビットに分かれていませんが、64 ビットのオペレーティング システムをインストールするとエラーが報告されます。その説明は以下の通りです)
オペレーティング システム: Linux RedHat5.6 64 ビット オペレーティング システム
データベース バージョン: Oracle Database 10g Enterprise Edition リリース 10.2.0.1.0 - 64 ビット


1. 64 ビット Linux オペレーティング システムまたはその他の 64 ビット オペレーティング システムをインストールするとエラーが発生します
1. 以前のインストールはすべて 32 ビット Linux オペレーティング システムだったので、新しい会社に切り替えて 64 ビット Linux を使用するまでは問題ありませんでしたが、VM を直接インストールしたときにこの問題が発生しました。 64 ビット Linux の場合、次のプロンプトと同様に、オペレーティング システムのビット数が VM プラットフォームのビット数と異なることが報告されます (その時点ではスクリーンショットがないため、具体的なプロンプトを忘れてしまったためです)。この仮想マシンは 64 ビットのゲスト オペレーティング システムを使用するように構成されていますが、このホストは VT をサポートしていません。」 この問題を解決するには、システムの VT サポートを有効にする必要があります。 、コンピュータの BIOS 仮想化テクノロジを有効にします。これは、コンピュータの CPU とマザーボードが仮想化テクノロジをサポートしているかどうかによって異なります。Baidu で簡単に確認できます。 BIOS で仮想化テクノロジーを有効にしてから Linux を再インストールする限り、すべてが正常になります。下2. Oracleは、Linuxのもとで中国語で文字化けされている中国語を示しています。1。Oracleデータベースが表示される理由:operationオペレーティングシステムはサーバーと一致していますが、クライアントはサーバー文字セットと矛盾しています世話されたことはすべて考慮されます。

3. 状況に応じて:
サーバーの文字セットが UTF8 である場合は、クライアントの文字セットを設定します (データベースの作成時にこの文字セットを使用することをお勧めします)。中国語と英語の両方に対応)
クライアント Linux 設定手順:
1. oracle データベースのインストール ユーザーに切り替えます。ユーザー名は oracle です
// oracle ユーザーの下の .bash_profile ファイルを編集します。
ファイルの内容: (特定のこのファイルの設定は人によって異なる可能性がありますが、心配しないでください。赤い線に注意してください)                                                PATH=$PATH:$HOME/bin:/usr/bin:/usr/sbin:/sbin
エクスポート PATH
エクスポート ORACLE_SID=orcl
エクスポート ORACLE_BASE=/u01/app/oracle
エクスポート ORACLE_HOME=$ORACLE_BASE/product/10.2 .0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_TERM=xterm
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export CLASSPATH=$ORACLE_HOME/JRE:ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

export NLS_LANG=AMERICAN_AMERICA.UTF8 //設置このパラメータ就代表設置用户客端の文字集、データベースを作成するときにこのパラメータを設定する必要はありません、構築は最も良い評価を行うための必要性です(我自身のデータ库はUTF8文字集)

$ ソースprofile //実行ソースコマンド修正完了。 bash_profile文件生效
これまで、設置完了、再登录Oracleデータベース库、查询显示正常、ただし一点注意、就是如果你插受信時的字符集不是UTF8下行,当你客户端服务器都变成UTF8文字したがって、3 つのポイント (ゲスト端末、オペレーティング システム、データベース) の文字セットのみが一致している場合、データ サイトの中国語は正常に表示されます。情况
私のオペレーティング システムは LINUX なので、Linux プラットフォーム用の独自の方法のみを説明します。中国語フォントをテストするために Linux+Oracle を仮想マシンにインストールしたため、Linux に中国語を直接インストールしてテストすることにしました。中国語 (追記: もちろん、プログラマーがデータベースと一致するように独自のフォントを設定するため、会社のサーバーではこの問題を考慮する必要はありません)。私がこの入力メソッドをインストールした理由は、3 つを使ってみたかったからです。同じ状況であれば、どの漢字を入力しても文字化けは発生しません。以前は、仮想マシン上の 3 つの文字 (オペレーティング システム、クライアント、データベース) が一致していない場合、テスト データベースに漢字が表示されることがあり、正常に中国語の文字が挿入されて表示される場合もあれば、そうでない場合もありました。したがって、入力メソッドで入力される文字も UTF8 であることを確認し、仮想マシンに中国語を直接入力できるようにするために、中国語入力メソッドを Linux に直接インストールしました。 L 1. ここでは、Linux に中国語入力メソッドをインストールする手順もリストされています。これは、自分で見つけるのにも便利です。 Linux で ROOT ユーザーに切り替え、Linux インストール ディスクまたは ISO ミラー ファイルを仮想マシンにロードします
# Mount /DEV /CDROM /MNT // ISO ファイルを MNT ディレクトリにロードし、サーバー ディレクトリに入って、インストールする中国語 入力方式インストール パッケージ c # CD /MNT /Server
# ls scim*// 必要な中国語入力方式インストール パッケージをリストします。これらはすべて次のように中国語入力方式でインストールされます。 (次を押します: (以下を押すと順番にインストールされます。インストール後、Linuxを再起動します)
1. SCIM-LIBS-1.4-41.EL5.X86_64.rpm 2. SCIM -.4-41.EL5.X86_64。 rpm 3. sciM- chinese-standard-0.0.2-1.el5.x86_64.rpm -scim-tables-chinese-0.5.6-7.x86_64.rpm -pinyin- 0.5.91-16.el5.x86_64.rpm
# RPM -IVH Scim-Libs-1.4.4-41.EL5.X86_64.rpm // 最初のパッケージ方法のみがここにリストされています。後の 5 つのパックのインストール方法はこれと同じです。必ず Linux を再起動してください。インストール後。

2. 中国語入力方式をインストールした後、root ユーザーに切り替え、ディレクトリ /etc/sysconfig/i18n に入り、Linux オペレーティング システムの文字セットを設定します。入力: locale) //チェックoracle ユーザー
での Linux オペレーティング システムの文字セット /etc/sysconfig/i18n i18n における Linux のデフォルトの文字セットは次のとおりです: LANG="en_US.GBK" //この項目の値を UTF8 に変更します。文字セット: LANG="en_US.UTF-8" en_US はシステムを表します これは英語で表示され、中国語バージョンは次のようになります: zh_CN 18n // i18n ファイルの変更を有効にするためにソース コマンドを実行します。
( PS: 実際、このフォルダーを変更するときに問題が発生しました。つまり、Redhat5.6 x64 システムを使用している Linux で ZHS16GBK 文字セットが見つからないため、LANG を LANG="en_US. ZHS16GBK" を選択して実行します。source コマンドを使用すると、ZHS16GBK 文字セットが存在しないことを意味するエラーが報告されることがわかりました。ZHS16GBK 文字セットは、コマンド locale -a を使用して見つけることができません。これが、私が選択した理由です。テスター環境では文字セットがUTF8の3つですが、よく考えてみると、一般的な企業のサーバーでは、オペレーティングシステムのクライアントとOracleサーバーの文字セットが同じであれば大丈夫です。プログラマーは開発時に独自のプログラムで ZHS16GBK エンコーディングを指定できるため、プログラム + クライアント + Oracle サーバーの文字セットが一貫しているため、無視しても大きな影響はありません。 ZHS16GBK 文字セットをインストールする方法をオンラインで探しています

3. 変更後、oracle ユーザーに戻り、コマンド locale または echo $LANG を使用して現在のオペレーティング システムの文字セットを確認します。クライアントとデータベースはすでに一致しており、両方とも UTF8 であることがわかります。この時点で、Oracle データベースのテスト環境に入ると、テーブルへの中国語の挿入、変更、クエリがすべて正常に表示されます。文字化けしなくなります。


概要:
文字セットの変換は非常に複雑なプロセスです。上記は私自身が遭遇した問題にすぎません。さらに複雑な問題が見つかったら、徐々に追加していきます。ただし、前提条件は 3 つ (オペレーティング システム) を維持することだけです。 、オペレーティング システム、クライアント、データベース サーバー)の文字セットが同じであることに加えて、異なる文字セットも変換できることがわかりましたが、いつ変換が失敗するかわからないため、変換は危険なので、最も安全です。テスト環境でない限り、データベースの文字セットを変更しないことが最善です。リスクは非常に高くなります。したがって、データベースを作成するときは、どの文字セットを使用するかを考える必要があります


例:

------------------------ --------- 99 私たちはみんな良い子です 123 広州華信息有限公司 SYS@orcl> ;テスト値に挿入(3,'中国広州白雲区');1 行作成されました。SYS @orcl>commit;コミット完了。SYS@orcl>select * from test; ------------------ 99 私たちはみんな良い子です 123 広州華信息有限公司 中国広州市白雲区 3



詳しくはこちらLinux での Oracle 中国語の文字化け解決の経験については、PHP 中国語 Web サイトの関連記事に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。