電子書籍の厳選無料作品が豊富!

php4、postgres8でデータベース登録をしています。
server_encoding、client_encoding共に
SQL_ASCIIです。

フォームから受け取った文字列をDBに書き込むと
特定文字だけ文字化けします。
ダメ字といわれる文字です。

文字化けしないようにINSERTするには
どうしたらよろしいのでしょうか?

A 回答 (4件)

PHPは内部処理にSJISは使えません。

SJISの【表】【予】【ソ】にはaddslashesでエスケープすべき文字が含まれているって判断されてしまうので"\"が付いちゃうんです。だからmbstring.internal_encodingの値はEUC-JPなどにして、フォームからの文字列はEUC-JPに変換してから内部処理してあげないといけないんです。表示をSJISで行うなら、出力時に再度SJISに変換する必要があります。php.iniの設定によって、このあたりの文字コード変換を自動で行う事もできます。参考URLを見て下さい。

参考URL:http://www.php.net/manual/ja/ref.mbstring.php
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考にします。

お礼日時:2005/05/13 17:57

補足です。



「文字コード変換を自動で行う事もできる」と書きましたが、PHPで日本語を扱う限り文字コードの問題は当面付いて回るので、それをしっかり理解するためにも入力、内部処理、出力、それぞれ箇所でどういう文字コードなのかをきちんと認識して、自動変換は行わず、意識して文字コードの変換を行う事をオススメします。

ちなみに日本語処理はある意味お約束のルーチンワークですから、使いまわしのできる形でサブルーチン化しておくと後々楽ですよ。
    • good
    • 0

私も、ダメ字というのは、初めて見聞きしました。


とはいえ、確かな名称は思いつかないですねー。
sjis文字化け文字、だと長いし。

postgres8は分からないのですが、文字コードですが、
EUCじゃダメなんですか?
私は基本的にEUCにして、再度確認してるんですが。
どちらにしても、一度EUCにコンバートしないと
ダメみたいですねー。
http://www.roje.co.jp/blog/blog.php?mode=MsgList …

参考URL:http://www.roje.co.jp/blog/blog.php?mode=MsgList …
    • good
    • 0
この回答へのお礼

あいがとうございます。

本当はEUCにしたいのですが・・・
ある事情があって出来ないのです。

お礼日時:2005/05/13 17:59

「ダメ字といわれる文字」とはなんでしょうか。

「ダメ字」という表現ははじめて聞きました。Googleで調べたかぎりでは「ダメ字」というフォントの情報ばかりで、当該問題とは関係ないように思えます。

具体的にどういう記号だとか漢字だとかが「ダメ字」と呼ばれているのか、できればどこでそのように呼ばれているのか教えてください。

この回答への補足

【表】【予】【ソ】などの文字です。
[¥]エスケープシーケンスの5Cの問題らしいのですが。
検索したら、ダメ字という表現をされていたからです。

補足日時:2005/05/12 19:48
    • good
    • 0

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