3

エンコーディングを UTF-8 に設定して作成された DB2 があります。

db2 create database mydb using codeset UTF-8

データ挿入スクリプトも UTF-8 エンコードで保存されています。現在の問題は、Windows のインストールでは UTF-8 が使用されていないため、コマンド ライン プロセッサが別のエンコーディングで動作しているように見えることです。

C:\Users\Administrator>chcp
Active code page: 850

これにより、データ (特殊文字を含む) がデータベースに正しく保存されないという問題が発生します。

Linux/AIX では、設定することでコマンド ライン エンコーディングを変更できました。

export LC_ALL=en_US.UTF-8

Windowsでこれを達成するにはどうすればよいですか? 私はすでに試しました

chcp 65001

更新:しかし、それは何の効果もありませんか?ジャンクを出力するため、db2clp は UTF-8 でエンコードされたファイルを処理できないようです。

D:\Program Files\ibm_db2\SQLLIB\BIN>chcp 65001
Active code page: 65001

D:\Program Files\ibm_db2\SQLLIB\BIN>type d:\tmp\encoding.sql
INSERT INTO MY_TABLE (ID, TXT) VALUES (99, 'äöü');


D:\Program Files\ibm_db2\SQLLIB\BIN>db2 connect to mydb

Datenbankverbindungsinformationen

Datenbank-Server                                                = DB2/NT64 9.5.0
SQL-Berechtigungs-ID                                            = MYUSER
Aliasname der lokalen Datenbank                                 = MYDB

D:\Program Files\ibm_db2\SQLLIB\BIN>db2 -tvf d:\tmp\encoding.sql
INSERT INTO MY_TABLE (ID, TXT) VALUES (99, 'äöü')
DB20000I  Der Befehl SQL wurde erfolgreich ausgeführt.
4

2 に答える 2

4

両方を設定する必要があります:

CHCP 65001
SET DB2CODEPAGE=1208

を実行する前に、db2cmdコマンド ラインでdb2 -tvf. CODESETこれは、に設定されているデータベースで機能しますUTF-8CODESETデータベース実行のセットアップを確認するには:

db2 get db cfg for <your database>

1208「データベース コード ページ」と「データベース コード セット」を探しますUTF-8

于 2014-11-19T11:25:01.850 に答える
1

エンコーディングを扱うときは、環境と現在の場所を注意深く調べる必要があります。だからあなたの場合:

  • サーバーはデータをエンコーディング A (UTF-8 など) で保存します。
  • クライアントがエンコーディング B の環境に存在する (windows-1252 など)

クライアントでは、クライアントのエンコーディングを使用する必要があります (または、クライアント側で意図的に別のエンコーディングを使用することをクライアントに伝えます ( windows-1251 環境内の UTF-8 でエンコードされたファイルなど)!)。クライアントとサーバー間の接続は、データをデータベースに格納するためにエンコーディング B をエンコーディング A に変更する作業を行っています。

于 2013-03-11T15:50:21.640 に答える