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

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

新規登録して質問してみよう
ただいま回答率
85.50%
PostgreSQL

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

Q&A

解決済

3回答

21289閲覧

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

skt456

総合スコア13

PostgreSQL

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

0グッド

1クリップ

投稿2017/10/17 01:34

###前提・実現したいこと
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/ツール等のバージョンなど)

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/17 01:46 編集

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

2017/10/17 01:51

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

回答3

0

自己解決

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

投稿2017/10/17 04:46

skt456

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuniku

2017/10/17 05:38

A5のhistory.txt(A5M2.exeと同じ場所)の > Version 2.11.1 2015/06/15 > ・PostgreSQL へプロトコルバージョン 2.0 で接続した際に日本語を正しく扱えない不具合の修正 があるので、バージョンアップで解消されたかもしれません
skt456

2017/10/17 05:45

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

0

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

にある、

sql

1SELECT 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は、インストール時に決まるので、環境により変わります。

sql

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

投稿2017/10/17 03:42

編集2017/10/17 03:48
kuniku

総合スコア253

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

skt456

2017/10/17 04:15

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

2017/10/17 05:15

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

0

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 01:55

編集2017/10/17 01:58
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

skt456

2017/10/17 02:17

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問