質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.03%

  • PostgreSQL

    858questions

    PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

postgreSQLのテーブルをA5で表示した際の文字化けが取れない

解決済

回答 3

投稿

  • 評価
  • クリップ 1
  • VIEW 523

skt456

score 5

前提・実現したいこと

postgreSQLのテーブルをA5で表示した際の文字化けが取れない

発生している問題・エラーメッセージ

初めて質問します。
学習用に購入した「SQL ゼロからはじめるデータベース操作」という本で、
cmdを用いずA5:SQL Mk-2にてSQLを学ぼうとしました。
cmdにてselect文で問題なく表示できたので実行環境を移して表示できるかという試みでした。

A5との接続は出来ています。
問題はA5上でテーブルを表示しようとすると文字化けが起こります。
エンコードに関する問題だと思いますが設定方法が分かりません。

エラーコードも文字化けしていて何をすればいいか

Windows10
PostgreSQL 9.6
A5:SQL Mk-2 2.10.1

該当のソースコード

CREATE DATABASE shop; 

--C:\PostgreSQL\9.6\psql.exe -U postgres -d shop;
CREATE TABLE Shohin( 
  shohin_id CHAR (4) NOT NULL
  , shohin_mei VARCHAR (100) NOT NULL
  , shohin_bunrui VARCHAR (32) NOT NULL
  , hanbai_tanka INTEGER
  , shiire_tanka INTEGER
  , torokubi DATE
  , PRIMARY KEY (shohin_id)
); 

BEGIN TRANSACTION; 

INSERT 
INTO Shohin 
VALUES ('0001', 'Tシャツ', '衣服', 1000, 500, '2009-09-20'); 

INSERT 
INTO Shohin 
VALUES ('0002', '穴あけパンチ', '事務用品', 500, 320, '2009-09-11'); 

INSERT 
INTO Shohin 
VALUES ('0003', 'カッターシャツ', '衣服', 4000, 2800, NULL); 

INSERT 
INTO Shohin 
VALUES ('0004', '包丁', 'キッチン用品', 3000, 2800, '2009-09-20'); 

INSERT 
INTO Shohin 
VALUES ('0005', '圧力鍋', 'キッチン用品', 6800, 5000, '2009-09-15'); 

INSERT 
INTO Shohin 
VALUES ('0006', 'フォーク', 'キッチン用品', 500, NULL, '2009-09-20'); 

INSERT 
INTO Shohin 
VALUES ('0007', 'おろしがね', 'キッチン用品', 880, 790, '2008-04-28'); 

INSERT 
INTO Shohin 
VALUES ('0008', 'ボールペン', '事務用品', 100, NULL, '2009-11-11'); 

COMMIT; 

試したこと

SQLファイルのデフォルトエンコーディングという項目がA5にありますが、
選択可能な項目全件試して変化がありませんでした。

補足情報(言語/FW/ツール等のバージョンなど)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m6u

    2017/10/17 10:46 編集

    PostgreSQLで構築したデータベースのエンコーディングはどうなっていますか? psqlが使えるなら、\l(エル)コマンドで確認できます。あるいは、createdbコマンドを実行したときのコマンドラインオプションを教えて下さい。

    キャンセル

  • skt456

    2017/10/17 10:51

    \lしました、エンコーディングはUTF-8になっています。コマンドラインオプションが勉強不足で分かりませんが記入していないはずです。

    キャンセル

回答 3

check解決した方法

+1

申し訳ない話なのですが、
A5の最新バージョンを導入したところ文字化けせずに表示できました。
依然として旧(A5:SQL Mk-2 2.10.1)は表示できていないためもう少し調べます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/17 14:38

    A5のhistory.txt(A5M2.exeと同じ場所)の
    > Version 2.11.1 2015/06/15
    > ・PostgreSQL へプロトコルバージョン 2.0 で接続した際に日本語を正しく扱えない不具合の修正

    があるので、バージョンアップで解消されたかもしれません

    キャンセル

  • 2017/10/17 14:45

    わざわざありがとうございます。助かりました。

    キャンセル

+1

PostgreSQLのドキュメントの、
文字セットサポート
「22.3.2. 文字セットの設定」あたりを見ていただきたいのですが、
データベースを作成するときに、扱う言語に合わせてエンコーディングを適切に与えないと、
文字化けが発生する要因の一つになります。

例えば、
createdb -E UTF8 -T template0 --lc-collate=ja_JP.UTF8 --lc-ctype=ja_JP.UTF8 japanese
ってコマンドで、ドキュメントにある日本語をUTF8で扱うjapaneseというデータベースが作成できそうです。
(データベース名やデータベース接続ユーザー名など変えたい場合はもうちょっとオプションを弄ることになるかもしれません。)

A5:SQL mkII側をいじってもダメということであれば、
もう一度データベースを作成し直すところからやれば良さそうな気がします。

わたしもA5:SQL mkIIユーザーですが、
A5:SQL側で強制エンコーディング指定はかけずに問題なく扱えています。
なので、今回のケースは余計にデータベース作成時のエンコーディング指定ミスを疑っています。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/17 11:17

    再作成を行ってみます。作成時の設定いろいろ探ってみますありがとうございました。

    キャンセル

+1

WindowsへのPostgresインストール(initdb)時に、デフォルトのロケールは何を選択されましたか?

Japanese_Japan.932 / C / ja_JP.UTF-8 のどれでしょうか?
(デフォルトだと、 "[Default locale]" でJpanese_Japan.932かな?)

http://db.just4fun.biz/?PostgreSQL/%E3%83%AD%E3%82%B1%E3%83%BC%E3%83%AB%E8%A8%AD%E5%AE%9A%E3%81%AE%E7%A2%BA%E8%AA%8D%E6%96%B9%E6%B3%95%E3%81%A8%E3%83%AD%E3%82%B1%E3%83%BC%E3%83%AB%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95

にある、

SELECT name, setting, context FROM pg_settings WHERE name LIKE 'lc%';


で、LC_COLLATE、LC_CTYPE が 確認できます。

今後のことを考えるならば、C か ja_JP.UTF-8 が無難だと思う。
一部は、インストール(initdb)で指定した後は、変更不可。

また、データベース作成時は、エンコードは何を指定されていますか?
私の場合は、Windows版 Postgres8.x 以降だと、以下で実施することが比較的多いです。
この場合では、A5(Ver2.11.6 x64edition)からは文字化けせずに、見られています。LC_COLLATEとLC_CTYPEは、インストール時に決まるので、環境により変わります。

CREATE DATABASE databaseWITH OWNER =データベースの所有者名(ユーザ名、何も指定しないと windowsだと postgres)
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'C'
       LC_CTYPE = 'C'
       CONNECTION LIMIT = -1;

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/17 13:15

    インストールの案内が本にあったのでそれに則って行いました。
    仰る通りJpanese_Japan.932でした。(インストール時の名称は多少違いましたがLC_COLLATEでは同名)
    今しがたデータベース作成時のエンコード指定を知りましたすみません。試します。

    キャンセル

  • 2017/10/17 13:24

    バージョンが異なるので、情報に錯誤があるかもしれませんが、
    https://lets.postgresql.jp/documents/technical/text-processing/2/
    を、読まれておくと良いと思います。

    キャンセル

  • 2017/10/17 14:15

    記入いただいたソースによるエラーです。
    ERROR: 新しい照合順序(C)はテンプレートデータベースの照合順序(Japanese_Japan.932)と互換性がありません
    HINT: テンプレートデータベースの照合順序と同じものを使うか、もしくは template0 をテンプレートとして使用してください

    すみません文字化けは直ったのでこれでクローズします。ありがとうございました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 91.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PostgreSQL

    858questions

    PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。