
いつもお世話になっております。
PHP初心者なのですが質問させてください。
タイトルの通りPHPからMySQLへと流したデータの一部半角スペースが
半角のクエスチョンマーク(?)に勝手に変換され困っています。
色々他のサイトを見て回った結果
<?php
mb_internal_encoding("utf-8"); //内部文字コードを変更
mb_language("uni");
mb_http_input("auto");
mb_http_output("utf-8");
mysql_query("SET NAMES utf8");
(以下DB接続部は略)
?>
とし、my.iniに
skip-character-set-client-handshake
を加えました。
環境はXAMPPを使っており次の通りです。
よろしくお願いします。
# Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9
# MySQL クライアントのバージョン: 5.0.51a
No.2ベストアンサー
- 回答日時:
質問内容を拝見すると、PHPの内部エンコードはUTF-8になっているようですね。
私も同じくPHP(UTF-8)、MySQL(UTF-8)で同じような経験をしました。
詳しく検証したわけではないのですが、DBに投入する直前のform中のhidden属性の
inputのvalue値に「」が含まれている場合にこのような現象が起きるようです。
(その先でどのような加工を行っているかまでは時間がなく調査していないのですが…)
最終的にDBに投入される際に「」が 0xc2 0xa0 という半角空白に変換されていました。(普通の半角空白はUTF-8でも0x20です)
この「0xc2 0xa0」という半角空白はSJISに変換することのできないコードのようで、
それが「?」と表示されるようです。
html_entity_decode()のPHPのオンラインマニュアル(http://jp2.php.net/manual/ja/function.html-entit …)をみると、
「ISO-8859-1 では '' エンティティが ASCII コード 32 ではなく
ASCII コード 160 (0xa0) に変換される」
とあるので、これが関係しているのかもしれません。
$sがDBに投入する文字列の場合、投入直前に以下のような処理を
入れれば大丈夫かもしれません。
----------------------
$sp = html_entity_decode('', ENT_QUOTES, mb_internal_encoding());
$s = mb_ereg_replace("[{$sp}]", ' ', $s);
----------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- MySQL XamppでインストールしたMySQLのフォルダのWinRARでのバックアップについて 1 2022/06/22 18:55
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- PHP PHP & MySQL: Server-side Web Development ペーパ 1 2022/04/19 19:23
- PHP ログイン機の付きの掲示板サイトを作りたいです。 2 2022/10/09 04:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel関数「COUNTIF」で”文字”...
-
全角括弧と全角読点の間隔を狭...
-
文字の入力で横バー上段、中断...
-
エクセルのCOUNTIFが正しくカウ...
-
全角英数文字が嫌われる理由を...
-
メッセージボックスで1025文字...
-
Replace関数は文字数の制限ある...
-
VBAで英数字入力チェックしたい。
-
半角記号、全角記号を含む正規...
-
VBScriptである文字列に半角文...
-
エクセルでデータを30バイト...
-
全角半角変換 C++/CLI
-
PHPでMySQLに入力した半角スペ...
-
1文字のStrConv fromUnicode
-
2つ以上の連続する空白文字を除去
-
文字列中の両丸括弧を取り除くV...
-
日本語(2byte文字)の判別方法...
-
@ezweb.ne.jpについて教えて下...
-
入力データ「英数字」と「アン...
-
秀丸マクロについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字の入力で横バー上段、中断...
-
メッセージボックスで1025文字...
-
全角括弧と全角読点の間隔を狭...
-
エクセルのCOUNTIFが正しくカウ...
-
Excel関数「COUNTIF」で”文字”...
-
VBAで英数字入力チェックしたい。
-
XMLのタグ名の禁則文字
-
全角英数文字が嫌われる理由を...
-
半角記号、全角記号を含む正規...
-
2つ以上の連続する空白文字を除去
-
Replace関数は文字数の制限ある...
-
記号は半角と全角どちらがよい...
-
エクセルでの漢字、カタカナ、...
-
特定の文字を簡単な操作で半角...
-
SEO タイトルに「&」を使用
-
パソコンで全角、半角文字の切...
-
文字列中の両丸括弧を取り除くV...
-
Excel2002 一桁数字だけ全角に置換
-
IT企業の技術屋にとって全角英...
-
Phonetic関数を利用して文章中...
おすすめ情報