こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

oracleの「????」表記について

お世話になります。

現在、oracle xeを使用し、DBの勉強をしております。
1点わからないところがありましたので、お手数ですがご教授をお願いします。

varchar2をデータ型とするカラムに対し、日本語でinsert文で挿入すると、
「????」で表現されてしまいます。

以下が入力したSQL文です
------------------------------------------------
insert into TABLELIST(ID,NAME) values(11,'テスト');
------------------------------------------------
カラムIDのデータ型:char(2)
カラムNAMEのデータ型:varchar2(9)

これは文字コードの違いによるものなのでしょうか。
oracle xeでは文字コードがデフォルトで「utf-8」になっているのですが、
utf-8では日本語の入力は不可能ということでしょうか。

投稿日時 - 2011-08-07 01:59:30

QNo.6926430

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

>utf-8では日本語の入力は不可能ということでしょうか。
そんなことはありません。
テーブルに登録した値はどのように確認しているのでしょうか。
何かしらのアプリを通して見ているなら、その表示で文字化けしている可能性があります。
sqlplusから確認するとどうなりますか?

当方の環境では問題なく表示されます。以下、確認結果です。

SQL> SELECT VALUE FROM NLS_DATABASE_PARAMETERS
2 WHERE PARAMETER='NLS_CHARACTERSET';

VALUE
--------------------------------------------------------------------------------
AL32UTF8

SQL> CREATE TABLE TEST (VAL VARCHAR2(30));

表が作成されました。

SQL> INSERT INTO TEST VALUES('テスト');

1行が作成されました。

SQL> INSERT INTO TEST VALUES('あいうえお');

1行が作成されました。

SQL> SELECT * FROM TEST;

VAL
------------------------------------------------------------
テスト
あいうえお

SQL> SPOOL OFF;

投稿日時 - 2011-08-08 15:41:10

補足

ご連絡が遅くなりまして、申し訳ありません。
御返信ありがとうございます。

検証まで行っていただき、大変助かります。
確かに日本語が表示されていますね。私のOS環境の問題なのかもしれません。

表示はsqlplusから確認しているため、アプリの問題ではないように認識しています。
Oracle XEのユニバーサル版を入れているため、日本語は問題なく表示されると思っていましたが、
文字キャラクタセットに問題があるのでしょうか。

投稿日時 - 2011-08-11 23:56:13

あなたにオススメの質問