アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

今、日本語と広東語が混在しているページを作っているのですが、どうしても文字化けが解消しないので相談させてください。

私の浅はかな知識では、複数の文字コードが混在する場合は、UTF-8で構築してやれば混在は可能と認識していたのですが、間違いないでしょうか。
ユーザーがPHP経由でPostgresにデータをPOSTし、その一覧をPHPで表示するだけの流れで、ブラウザで表示するのもページの構築自体もUTF-8で行っています。

PHPからinsert文を実行する際に、mb_convert_encodingを使わないで広東語を入力すると
pg_exec(): Query failed: ERROR: Unicode characters greater than or equal to 0x10000 are not supported
とエラーが表示されます。
しかし、mb_convert_encodingを通したあとのデータはすでに文字化けしており、結果もそのまま文字化けしてしまいます。

Postgresを使わずに、テキストに書き込みをした際には混在は可能でしたので、Postgresの問題かと思い、質問させて頂きました。
ちなみにデータベースのエンコードはUNICODEにしてあります。
ご指摘、助言等何でも構いませんのでよろしくお願いいたします。

A 回答 (2件)

 ここでは「バイナリが扱える型」という意味で LOB と書きましたが、混乱させてしまったようですね。

申し訳ない(^_^;
 ようするにバイナリ型の意味です。
 バイナリなら、ユニコードとかそういう概念は関係なくなるので、どんなデータでも自由に扱えることになります。

 Postgres だと、bytea 型がそれに当たるようです。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。
きちんと動作確認してから返事しようかと思ったのですが、ちょっと時間がかかりそうなので現状だけご報告です。
どうもバイナリで保存はできたようなのですが、表示させるときそのまま表示してしまうようで、
\345\274\265\350\227\235\350\254\200\345\220\214\351・・・
と羅列してしまいます。
バイナリから文字に戻してやらないといけないんだろうなーといろいろ試しているのですが、うまく表示されない状態です。
いくつか疑問点もあるので、解決しながらとは思ってるのですが、チョット他に仕事が入ってしまいまして。。。
また改めて質問させて頂くかもしれません。
どうもありがとうございました。
何かお気づきの点がありましたらまた御願いいたします。

お礼日時:2005/04/22 22:18

 そのメッセージは3バイト文字以上の文字には対応できない、というメッセージです。


 見た感じ Postgres 自体が仕様としてサポートしていないようなメッセージに見えます。
 なので、文字列は LOB タイプの項目に挿入するなどの処置を行った方がいいかもしれません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
「LOB タイプの項目に挿入する」という意味がわからないのですが、もう少し情報を頂けないでしょうか。
よろしくお願いいたします。

お礼日時:2005/04/22 11:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!