PHP&MyQLでショッピングサイトを作ろうと制作中です。
今、MySQLで日本語検索ができず行き詰ってしまいました。
日本語を16進数に変換して検索させれば、うまくいきそうだと考えていますが、なかなかうまくいきません。
MySQLに登録した日本語データは「EUC」の文字コードを16進数に変換したものです。検索窓から入力した日本語の文字コードもEUCであれば、そのまま16進数に変換してマッチングしてやれば、検索できそうなのですが、
POSTで取得した日本語の文字コードが、どうしてもEUCになりません。
(mb_convert_encodingを使用してもだめだし・・・)
POSTで取得した文字列の文字コードの変換は、どうすればいいのでしょうか?
No.3ベストアンサー
- 回答日時:
> MySQLは日本語検索に対応していないので
「日本語検索に対応していない」は、誤り。
あんまり、上手い表現じゃないかもしれないが、
「設定等により、日本語検索が困難な場合がある」てな事。
EUCなら無条件で日本語検索できるというのも誤り
DBのセッティングがEUC向けになってる場合が多いだけって事。
MySQL4.1未満なら、DBのエンコーディングを調べるか問い合わせて、それにあわせるしかない
多少の誤検索があってもいいなら別
MySQL4.1以上を利用できるなら、なんでもOK
自分で、それにあわせたテーブルを作る必要があるけど
#除くベースエンコードがUTF8以外の場合
No.2
- 回答日時:
「262332333536373b262333303033333b262332303538313b」を元に戻すと
小畑健
ですね。
POSTされた入力値の問題のように思います。
ちなみに私はEUCのまま無変換でMySQLにinsertして普通に検索出来ています。
この回答への補足
-----------------(ソース)-------------------
<form method="post" action="serch.php">
<input type="hidden" name="mode" value="input">
<table>
<tr>
<td>作品名</td>
<td><input type="text" name="title" size="24" style="width:150px; height:20px"></td>
</tr>
<tr>
<td>作者名</td>
<td><input type="text" name="name" size="24" style="width:150px; height:20px"></td>
</tr>
</table>
<input type="submit" value="検索する">
</form>
-----------------(ソース)-------------------
上記のように検索窓を作成して、POSTしています。
POST値を取得した時点で、文字コードがEUCでない
ということでしょうか。
MySQLに入っているデータはEUCですので、
検索キーもEUCである必要がありますよね?
No.1
- 回答日時:
>MySQLに登録した日本語データは「EUC」の文字コードを16進数に変換したものです
是非とも、その日本語データのサイズの最大長と、
その変換方法を教えてください。
また、変換されている理由はなんですか?
データ保護のため、それとも検索のため?
かなり回り道している予感がする
この回答への補足
作ろうとしているショッピングサイトというのは、マンガの販売サイトです。
ですので、マンガのタイトルや作者名で商品を検索する機能をつけたいと思っています。
たとえば「DEATH NOTE」(作者:小畑健)というデータがあったとします。
検索条件が「作者名:"小畑"」の場合、
SQLで「SELECT * FROM table WHERE auth LIKE "%小畑%"」とやれば、
該当するデータ(DEATH NOTE)が検索結果として表示されるだろうと思っていましたが、
実際やってみるとうまくいきませんでした。
なぜ日本語データを16進数に変換しているかというと、
MySQLは日本語検索に対応していないので、
16進数に変換して検索する必要があると、
個人がやっている解説サイトで見かけたからです。
しかし、「小畑健」(EUC)をunpack("H*hex", "小畑健")として16進数に変換してやると、
「beaec8aab7f2」となり、
検索窓からPOSTされた「小畑健」を同様にunpackで16進数化すると、「262332333536373b262333303033333b262332303538313b」になってしまいます。
恐らく文字コードが違うことが原因だと思うのですが・・・。
もしかして、16進数化する必要はないのでしょうか??
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(IT・Webサービス) Google日本語入力の操作方法 一度確定した後の訂正方法 1 2023/06/17 16:03
- Google+ とっても古いスマホですが、お聞きしたいです。 iPhone8プラスですが、Googleの検索文字を入 3 2023/08/06 08:59
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- その他(プログラミング・Web制作) 文字コード及びフォントに関する次の記述を読み,適切なものをすべて選べ。 ASCIIとは,英数字だけを 4 2023/01/11 19:10
- その他(メールソフト・メールサービス) メールソフトを教えてください 1 2023/03/28 23:32
- ノートパソコン chromebookのcaps lockが外れなくなった 5 2022/07/14 19:23
- マウス・キーボード chromebook キーボードについて 1 2022/10/16 13:29
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字コードの%E3%80%とは何です...
-
SQLのデータで半角カナを全角に...
-
CString から LPCTSTRの型に変換
-
日付をシリアル値に変換
-
謎のメールのメールヘッダーに...
-
VB→Java変換ツールしませんか?
-
VBScript文字列をSJISからUTF8...
-
Visual Studio プロパティペー...
-
Encode.pmで「髙」(ハシゴ高)...
-
Excel VBAでPDFファイルをMicro...
-
gccでiconvを使った文字コード...
-
文字化けしてしまって困っています
-
Kシェルでの文字型→数値型変換
-
面白い変換ミス言葉を募集して...
-
Excelで半角カナのみを全角に変...
-
HTMLユニコード?の変換
-
VB6にも「ToString」ってあり...
-
改行を含んだ文字列を正規表現...
-
CSVファイルをTSV形式に変換
-
【PHP】全角記号を半角記号...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでPDFファイルをMicro...
-
CString から LPCTSTRの型に変換
-
文字コードの%E3%80%とは何です...
-
SJIS->UTF8->SJISコード変換に...
-
Visual Studio プロパティペー...
-
テキストをhtml変換するには
-
VBScript文字列をSJISからUTF8...
-
文字化けしてしまって困っています
-
LINUX上でシリアル通信(C++)
-
シャープ(#)の受け渡し
-
【PHP】全角記号を半角記号...
-
エクセルでの漢字(全角ひらが...
-
URLが日本語なのになぜ表示...
-
CString型からdouble型への変換
-
ファイル名の右側を変更したい ...
-
SQLのデータで半角カナを全角に...
-
Excelで半角カナのみを全角に変...
-
改行を含んだ文字列を正規表現...
-
VB6にも「ToString」ってあり...
-
ウイザードからのVBAでクエリー...
おすすめ情報