スレッド表示 | フラット表示〕 全トピック 920 件中 152 番目 次≫ ≪前

文字化け

created: 2007-01-08 19:59 | modified: 2007-01-13 14:43 | reply: 2

[3525] 文字化け

user: ごん | created: 2007-01-08 19:59
すいませんが、教えてください。
現在PHP5、MYSQL4.1を使用してデータの登録をしているのですが、データ登録時に、一部の文字がばけて登録されてしまします。PHP、MYSQLともに使用コードはSJISです。
一応、登録時に以下の関数を使用しています。

--------------------------------------------------
$DATA = $_POST['data']; //テキストエリアの内容取得
$DATA1 = stripslashes($DATA);
$TEXT = mysql_escape_string($DATA1);
:
:
$sql = "INSERT INTO $U_NAME(message) VALUES('$TEXT')";

----------------------------------------------------
ちなみにMYSQLにデータを登録するときに半角カナも登録されません。MYSQL4.0のときは登録できたのですが・・・。
文字化けする文字は『表示』という言葉です。それ以外にもあるかもしれません。
だれか分かる方がいらっしゃれば教えて下さい。
もしかしたら、PHP、MYSQLのiniファイルの指定でしょうか。
reply: 3529 返信 編集 削除

[3529] SET NAMES 'sjis'

user: シロウ | created: 2007-01-12 16:45
MySQL4.1から文字コードの設定が変わったと思います。

文字コードをデータベースだけではなくテーブルや各項目毎
に設定できる様になっているはずです。

SET NAMES 'sjis';


CREATE TABLE `test` (
`id` VARCHAR( 11 ) CHARACTER SET sjis COLLATE sjis_japanese_ci,
`name` VARCHAR( 64 ) CHARACTER SET ujis COLLATE ujis_japanese_ci,
`comment` VARCHAR( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci
) TYPE = innodb CHARACTER SET utf8 COLLATE utf8_general_ci;

SET NAMESを宣言すれば、問題が解決できると思いますが
文字化けが解消できない場合は、テーブルの各項目の文字
コード設定も確認してみてください。
Parent: 3525  reply: 3530 返信 編集 削除

[3530] Re.SET NAMES 'sjis'

user: ごん | created: 2007-01-13 14:43
シロウ様、ご返答ありがとうございました。
いろいろ調べた結果、Shift_JISコードだと表:955C、予:975C、十:8F5Cなど2バイト目が5Cの文字らしく、5Cは1バイトで表すと、『\』になり文字化けが生じるらしく、それを解消するためには、php.iniファイルのmagic_quotes_gpcをONにし、stripslashes関数で変換で変換して登録すればOKでした。また半角カナに関しては、登録時に全角カナに変換して登録することにしていまのところOKです。
ご返答ありがとうございました。
Parent: 3529  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 152 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑