• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2バイト文字での SELECT文 がうまくいきません)

2バイト文字でのSELECT文が文字化けする原因と対策

このQ&Aのポイント
  • 2バイト文字でのSELECT文が文字化けする問題について質問します。SELECT文の中で文字列を比較するために使用するシングルクォーテーションで囲まれた部分で文字化けが発生します。この問題はクエリを操作できるエディタ上でも、アプリのソース上(画面上)でも同じです。
  • 問題の原因は、データベースの文字コードとソースコードの文字コードが一致していないためです。質問文の場合、データベースの文字コードがeucであり、ソースコードの文字コードもeucですが、2バイト文字が文字化けしてしまいます。
  • この問題を解決するためには、文字列の比較で2バイト文字を正しく扱えるようにする必要があります。具体的な対策としては、mb_convert_encoding関数を使用して、文字列を正しい文字コードに変換する方法があります。クエリ内の文字列を変数として扱い、mb_convert_encoding関数を使用して、適切な文字コードに変換することで文字化けを防ぐことができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.1

(それほど自信はないのですが[苦]) (1)フォームから読み込んだ値を使ったときは、うまくいくということですね。 「フォームから読み込んだ値の文字コードは、 Shift-JIS になっている」という話をどこかで聞いたことがあります。だから、「赤」という文字の部分だけを Shift-JIS に変換すればいいかな?と思いますが。 (2)ソース自体を、UTF-8 で保存しなおして、やってみては? うまく行けば、うれしいです。

japan_3
質問者

お礼

ご回答ありがとうございました。 ご指摘のとおりエンコードの問題でした。 フォームからのデータのエンコード、 ソース内で定義された変数のエンコード(=ファイルのエンコード) データベースから返されるエンコード(=各DBの設定による) AJAXを利用した際の戻り値のエンコード を1つずつ冷静に精査するとこの問題は解決しました。 s-jis,euc,utf8の3つが混じっていて混乱していました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう