いわゆる「ダメ文字」について - PHPプロ!Q&A掲示板

178

  • 300P

いわゆる「ダメ文字」について

質問日時 / 2006年9月20日 21:52    回答数 / 4件

Questioner:  windblow  このエントリーをはてなブックマークに追加 

キーワード / SJIS    ダメ文字    マルチバイト   

PHP:  EUC-JP
mySQL: SJIS
HTTP output: UTF8

このようなencodeの構成で、WEBアプリを(手探りで)作成中です。ところが、mySQLの文字コードがSJISのため"表","十","構"など、いわゆる「ダメ文字」に悩まされています。

SJISにエンコードした「ダメ文字」入りのテキストデータは、"表¥","十¥"などのように置換すればよいのは分かるんですが、その置換方法がわかりません。正規表現で回避できるのでしょうか、調べ方が下手だったのか、ネットで探してみても解決策を見つけられませんでした。

そこで質問なのですが、たとえば次のような文字変数(EUC-JP)があった場合、mySQL(SJIS)に登録するためには、どのような置換コードを書けばいいのでしょうか?

$txt='十人の能力構成表';

どうぞ、宜しくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01kurofuneこんにちは、 基本的に、SJISは文字化けもそうで
┃┗A01-1windblow回答ありがとうございます。 なるほど、"addslashe
┗A02daijurinこんにちは 「ダメ文字」と仰っていますが、文字コ
 ┗A02-1windblowこんばんは、コメントありがとうございます。 PHP上

回答一覧

並び替え:

A01 満足
answererkurofune [9月21日 09:14]

こんにちは、


基本的に、SJISは文字化けもそうですが、


セキュリティ的にもよくないので、MYSQLにEUC-JPで登録する方が、


楽だと思いますが。


http://q.hatena.ne.jp/1142341683

http://www.php.net/manual/ja/function.mysql-real-escape-string.php

この意見に回答する

ツリーへ TOPへ

A01-1
replyerwindblow [9月21日 23:53]

回答ありがとうございます。

なるほど、"addslashes()"だけでは不十分なんですね。
"mysql_real_escape_string"で週末試してみます。

SJISのmySQLにEUCで登録することも考えたのですが、order byで
名前ソートしなければならず、この形でやっています。セキュリティ的に
塞ぎきれないところがあるんですね。
サーバー構成の早期変更も視野に入れることにします。

この意見に回答する

ツリーへ TOPへ

A02
answererdaijurin [9月21日 17:29]

こんにちは

「ダメ文字」と仰っていますが、文字コード変換を行う際、変換先文字コード
だけではなく、変換元の文字コードも指定しておけば、正常に変換できると思
うのですが。

自動判別が困難なだけだと思います。

この意見に回答する

ツリーへ TOPへ

A02-1
replyerwindblow [9月21日 23:56]

こんばんは、コメントありがとうございます。
PHP上でのコード変換は、問題ないんですよ。
ただ、mySQLにSJISデータを登録するところで、
ダメ文字が化けてしまうんです。

上のkurofuneさんに教えて頂いたページを参考に
解決を試みてみますね。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
array_mergeの再帰処理の動作について
 このエントリーをはてなブックマークに追加 
A
>1個になったとき$leftを返しますが、 >このとき、最終的な$leftはnullになるかと思います。 いいえ、最後は「渡された配列をそのまま」返します。要素が2以上あるときとの違いは(並べ替えずに戻るので...

>>続きを読む

再帰関数は最初の内は混乱しますが、非常に上手く使える場面もいずれ出てきます。これを機会に学んでいけるといいですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)