AL32UTF8でJIS第三水準文字を挿入する方法

このQ&Aのポイント
  • Oracle 11g + Windows 2008 Server上で、AL32UTF8のキャラクターセットを使用してJIS第三水準文字を挿入する方法について教えてください。
  • 通常の漢字など第一・二水準の文字は問題なくinsertできますが、第三水準の文字をinsertすると「?」と表示されてしまいます。また、lengthbでサイズを確認すると1バイトとなり、正しく認識されていないようです。どのようにすれば第三水準文字を問題なくinsertできるでしょうか。
  • Oracle 11g + Windows 2008 Serverで、AL32UTF8のキャラクターセットを使用してJIS第三水準文字をinsertする際に生じる問題について教えてください。通常の漢字は問題なくinsertできますが、第三水準文字をinsertすると表示が「?」になります。また、lengthbでサイズを確認すると1バイトと表示されます。問題なくinsertする方法はありますか?
回答を見る
  • ベストアンサー

AL32UTF8でJIS第三水準文字を挿入したい

Oracle 11g + Windows 2008 Serverです。 サーバー上でPL/SQLを使用して JIS第三水準文字をinsertしようとしています。 キャラクターセットはAL32UTF8にしています。 通常の漢字など第一・二水準の文字は問題なく insertできるのですが、「丫丮丯丰」のような 第三水準の文字をinsertすると、エラーにはなりませんが、 selectした場合に「?」と表示されます。 また、lengthbでサイズを確認すると1バイトであるため、 第三水準の文字を認識できずに「?」に変換されているようです。 どのようにすれば問題なくinsertできるのでしょうか。

  • Oracle
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

insertで失敗しているのか、selectで失敗しているのか、確認できていますか? dump関数で、格納されている内部コードを表示できるので、もう一度確認した方が良いような気がします。 (問題の切り分けが適切でないと余計な時間がかかるので・・) 例) select dump(項目,1016) from hoge;

palayo
質問者

お礼

回答ありがとうございます。 insertで失敗しています。 dump関数でselectすると、 「?」と表示される箇所は「3f」になります。

関連するQ&A

  • 外字をJIS水準内の文字に置き換えたい

    髙→「高」 﨑→「崎」 というように、外字にはそれぞれ当てはめるべきJIS水準内の文字が用意されているかと思います。 このように、使用頻度の高い文字であれば頭で覚えていられるのですが、初めて見る漢字、難しい漢字の外字をJIS水準内の漢字に置き換えなければならない場合、皆さんならどうしますか? ・外字をJIS水準内の文字に置き換えるための対比表等があれば大変助かります。 ・また、いわゆる「外字変換ツール」というものは有効でしょうか? 使用OS:WINDOWS2000  

  • 4バイトUTF-8文字でUPDATEするには?

    お世話になります。 Windows7 Pro 32bit SP1内に、 MySQL Ver5.5.12と、 phpMyAdmin Ver3.3.10.1を入れています。 (ほかに、  Apache HTTP Server 2.2.19(VC9)、  Apache Tomcat 6.0.32、  PHP 5.3.6(VC9 x86 ts)、  Eclipse3.6(Helios) pleiades-All-In-One(Java)なども) この開発環境で、 phpMyAdminを開いて、 文字コードとしてUTF-8(3バイト以内の文字)では、 SQL文のUPDATE処理等が、 問題無く動作していることを確認済です。 そこで、質問内容ですが、 UTF-8で4バイトになる文字(JIS X 0213の漢字第3・第4水準の一部が4バイトになる)、 「JIS X 0213(1面)(漢字第3水準)」 Unicode:U+2000B UTF-16 :0xD840 0xDC0B の文字である、"𠀋"を、    ↓ phpMyAdminを開いて、これまで3バイトまでのUTF-8文字と同様に、 1つのVARCHAR属性フィールドに対して、 𠀋 と手入力して、 phpMyAdminの[実行する]ボタンをクリックして、 UPDATEしてみたところ、 登録された文字列が、"????"として更新されてしまいます。 これを、正しい文字 𠀋 として更新されるようにするには、 どのような対応をすれば、よろしかったでしょうか? なお、現在、 コマンドで、 SHOW VARIABLES LIKE 'char%'; を実行すると、 以下のような表示がされている状態です。   ↓ character_set_client    :utf8mb4 character_set_connection :utf8mb4 character_set_database  :utf8mb4 character_set_filesystem :binary character_set_results   :utf8mb4 character_set_server   :utf8mb4 character_set_system   :utf8 character_set_dir      :D:\mysql\share\charsets\ 以上になります。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • ASP.NETでのオラクルAL16UTF16について

    ASP.NETでのオラクルAL16UTF16について OS WindowsXP VisualStudio .NET 2003 + Oracle 10g にてASP.NET 2.0 の 開発を行っています。 オラクルではキャラクタセットでAL16UTF16を指定しています。 ASP.NETでは、web.configで <?xml version="1.0" encoding="utf-8" ?> と <globalization requestEncoding="UTF-8" responseEncoding="UTF-8" /> を指定しています。 このように設定して、特に今のところ不具合があるわけではないのですが オラクルではUTF-16、ASP.NETではUTF-8となっていて 違うものを指定していても不具合等はないのでしょうか。 または、不具合がまだ見つかっていないだけでしょうか。 以上、ご教授をお願いします。

  • java6で4バイトUTF-8文字を利用するには?

    お世話になります。 現在、java Version6 Update24(日本語版)のJDKを、 Windows7 Pro 32bit SP1内に入れて、 Apache HTTP Server 2.2.19(VC9)、 Apache Tomcat 6.0.32、 PHP 5.3.6(VC9 x86 ts)、 MySQL5.5.12、 Eclipse3.6(Helios) pleiades-All-In-One(Java)、 という開発環境で、 Javaサーブレット、JSP、JavaBeansを利用して、 動的Webアプリを開発中です。 まず最初に、文字コードとしてUTF-8(3バイト以内)で、 上記環境を一通り作成し、SQL文のUPDATE処理等が、 JavaとMySQL間で問題無く動作していることを確認済です。 その状態で、 次に、 UTF-8で4バイトになる文字(JIS X 0213の漢字第3・第4水準の一部が4バイトになる)を、 ためしに、直接JavaサーブレットのdoPostメソッド内へ、 「JIS X 0213(1面)(漢字第3水準)」 Unicode:U+2000B UTF-16 :0xD840 0xDC0B の文字である、"𠀋"を、    ↓ String strTest = "𠀋"; みたいにして、単純に代入するだけのロジックをためしに追加して、 Eclipse3.6でデバッグトレースしてみたところ、 strTest内に対して、上記文字が代入されない状態です。 (UPDATE時には、SQL Exceptionエラーになっています) 現在は、 request.setCharacterEncoding("UTF-8"); という状態ですが、 この"UTF-8"を、 どのような文字コードに変更すれば、 UTF-8で4バイトになる文字(JIS X 0213の漢字第3・第4水準の一部が4バイトになる)を、 Javaで、文字列(String)として利用可能な状態に出来るのでしょうか? (Oracleのサイト   http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/intl/encoding.doc.html  で探しましたが、該当すると思われる文字エンコードが見当たらなかった為・・・) または、他の方法で実現する必要がありましたら、 その方法をぜひ教えてください。 以上、よろしくお願いします。

  • utf8mb4でもInsertエラー

    エンコーディング「SQL_ASCII」で作成されたpostgreSQLのデータを、MySQLに取り込む作業を行っています。 初めMySQL側のデータベースを「utf8」で作成していたのですが、絵文字やサロゲートペアに対応していないとのことで、「utf8mb4」に変更しました。 にも拘わらず、INSERT時に以下のエラーメッセージがでます。 exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE3\x82' for column 'note' at row 1' in ・・・ 「utf8mb4」にした際に行ったことは以下です。 --my.cnf [mysqld] character-set-server=utf8mb4 [client] default-character-set=utf8mb4 -- mysqlを再起動した後、各character_setが「utf8mb4」に変更されたことを確認し、 新しくデータベースを生成し、テーブルを作成しました。 CREATE DATABASE `testdb` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ となったので、問題ないと考えています。 問題の文字をスルーしてInsertするか、問題の文字のみを除去してInsertするかしたいのですが、できずにいます。 何か足りない操作等があるのでしょうか・・ 是非お力をお貸しいただきたく思います。 よろしくお願いいたします。

  • MYSQLでの文字化け

    php(utf-8)を使ってmysqlで簡単なサイトを作ってみましたが, 日本語をフォームから入力して、表示するとき、ブラウザではまったく問題ないのですが、 phpMYadminでデータベースを開くとの日本語部分が文字化けして読めません。 ローカルでは問題ないので、サーバーの問題かとおもい、 他のサーバー(ロリポップ)にphpとsqlをテストでコピーしてみましたら大丈夫でした。 何かの設定かと思い、 mysql> SHOW VARIABLES LIKE 'char%';でチェックし比べてみたところ 正常(ローカル、ロリポップともに)のものは character set client utf8 character set connection utf8 character set database utf8 なのに 文字化けするほうは(北米のサーバー) character set client latin1 character set connection latin1 character set database latin1 でした。文字コードのデフォルトが違うからだと思い、ググって見たところ、 結構よくある問題で、my.cnf でデフォルト文字設定utf-8に変更するなどで解決できるとありました。 でも、使っているサーバーは予めphpMYadminがインストールされているレンタルサーバーであるのでmy.cnfはさわれないのでは??? サーバー会社に連絡して変更可能かと聞いたところ、my.cnfを変更することはできません。またデータベースのサポートはいたしません。と冷たく返答。サーバー会社を変えたいところですが、自分が借りたサーバーではないのでそのまま使うしかありません。 ただ、教わった、sqlコマンドからALTER DATABASE <your_database_name> CHARACTER SET utf8 COLLATE utf8_general_ci を実行したところcharacter set databaseのみutf8になりました。(文字化けは一緒) character set connection とcharacter set database をmy.cnfをいじらず、sqlコマンドで変更可能なのでしょうか? もし、無理ならばどのような方法があるのでしょうか? サイトのフォームからの送信と受信はUTF-8に設定しています。 (だからだとおもいますが、ブラウザの表示だけは文字化けせずにでます。) お知恵がありましたらよろしくお願いします。

    • ベストアンサー
    • MySQL
  • JISの第1・第2水準以外の漢字の見つけ方

    JISの第1・第2水準内の漢字以外は使わず、 それに該当するものは平仮名、または別の漢字にして入力しなければいけない仕事があるのですが 見極め方というか、見つけ方を調べてみたところ Excel等でセルに1文字ずつ入力して見つけることはできるそうですが 何しろ入力量は相当量あるため、非常に効率的ではありません。 JISの第1・第2水準がどういうものなのかも理解していませんので 例えば、Word等で入力した文章中に 第1・第2水準以外のものがあったら印を付けてくれる、色を変えてくれるとか そういったフリーソフト等ありませんでしょうか? Windows7を使っていますが7対応ではないフリーソフトでも構いませんので教えて下さい。 (まったく動作しない可能性も無くは無いので)

  • MySQL(UTF-8)で ~ が文字化けしてしまう

    いろいろと検索などして探してみたのですが、情報が得られず困っております。お分かりの方おられましたらご教示いただけると幸いです。 環境 Apache 2059 PHP 5.1.6 MySQL 5.0.24a WindowsXP SP2 PHPソース すべてUTF8書いてます。 HTML出力もヘッダーでUTF-8で表示しています。 my.cnfでは すべて default-character-set=utf8 で統一しています。 さらに、PHPからMySQLに接続したときに set names utf8; もしてます。 この環境で、 ~ のみが文字化けしてしまいます。 たとえば、 "あ~あ" とINSERTすると SELECTしてみると "あ?あ" となってしまいます。 ~以外の文字は問題ありません。 またPHP上で発行クエリ文を表示させると、まだ~となっているので、MySQL側の問題だとは思っているのですが、どう設定すればよいかわからないところです。 MySQL Query Browzerからでも同様になってしまいます。 ご存知の方おられましたら、情報よろしくお願いします。

    • ベストアンサー
    • MySQL
  • JIS水準漢字の選別方法教えてください

    『JIS第1・2水準漢字のみ使用にするには』 氏名入力で、JIS第1・2水準漢字のみ使用という仕様の場合、それ以外の文字をチェックする方法を教えてください。エクセルの設定がなければ、フリーソフトのダウンロードでなく、サイト機能使用できるサイトを教えてください。

  • 文字コードShif-JIS、UTF-8

    漢方の「瘀血」の“瘀”という文字の文字コードはUTF-8にはありますがShift-JISにはありません。html記述に作成にTeraPadを使っていますが、Shif-JISがデフォルトのようで“瘀”の文字がATOKで書き込めず、?に置き換わってしまいます。TeraPadの表示オプションの「文字コード」をUTF-8に設定しても同じです。ためしにメモ帳でやってみたところ問題なくATOKで瘀と書き込めます。TeraPadをUTF-8ベースで使うにはどうしたらいいでしょう。