• 締切済み

文字によって文字コードが違ってしまいます。

PHP4.3.9で、テキストボックスにひらがなを入力してもらい、 その文字列を元にSQL文を発行して結果を表示するシステムを構築しております。 (JavaScriptを用いて簡易キーボードを作成し、ひらがなしか入力できないようにしてあります。) ユーザに入力してもらった、ひらがなをPHPで受け取った際、 特定の文字ではUTF-8として扱いSQL文が発行されるのですが、 別の文字ではASCIIとして認識してしまいます。 全てのひらがなをUTF-8として扱わせるにはどのような設定が必要なのでしょうか? ちなみに、.php、.inc、.jsは全てUNICODEで作成しております。

  • PHP
  • 回答数1
  • ありがとう数2

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

mb_convert_encodingを使って $str = mb_convert_encoding($str, "UTF-8"); をしてみたらどうでしょうか(一回強制するというような意味)

susumufire
質問者

お礼

回答、ありがとうございます。 早速試してみたのですが、 成功する文字と失敗する文字がでてしまいます。 成功する文字は、受取りも変換後も「UTF-8」なんですが、 失敗する文字は、受取りも変換後も「ASCII」となってしまいます。

関連するQ&A

  • コピーすると文字コードが変わっちゃう

    プログラムを(ちなみにPHP)エディター(ちなみに秀丸)で入力して保存時にエンコードの種類を「Unicode(UTF-8)」で保存 もちろんプログラム(HTML/PHP記述)では <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> を指定しています 実行すると文字化けも起こらず正常にホームページが完成しました それをコピーして別のサーバーにアップすると正常にホームページが開かないんです 文字化けだけでなくソースが画面に表示されました そのソースも文字化けです コピー先をエディターで開くと「日本語(Shift-JIS)」になっていました コピー元は「Unicode(UTF-8)」です なぜでしょう? そもそも「Unicode(UTF-8)」をコピーするには単純にコピーしてはいけないのでしょうか? プログラムの量が結構あるのでこの「日本語(Shift-JIS)」を一括して「Unicode(UTF-8)」に保存できるようなツールはないのでしょうか?

  • 複数の文字コードの混在

    お世話になります。 今、日本語と広東語が混在しているページを作っているのですが、どうしても文字化けが解消しないので相談させてください。 私の浅はかな知識では、複数の文字コードが混在する場合は、UTF-8で構築してやれば混在は可能と認識していたのですが、間違いないでしょうか。 ユーザーがPHP経由でPostgresにデータをPOSTし、その一覧をPHPで表示するだけの流れで、ブラウザで表示するのもページの構築自体もUTF-8で行っています。 PHPからinsert文を実行する際に、mb_convert_encodingを使わないで広東語を入力すると pg_exec(): Query failed: ERROR: Unicode characters greater than or equal to 0x10000 are not supported とエラーが表示されます。 しかし、mb_convert_encodingを通したあとのデータはすでに文字化けしており、結果もそのまま文字化けしてしまいます。 Postgresを使わずに、テキストに書き込みをした際には混在は可能でしたので、Postgresの問題かと思い、質問させて頂きました。 ちなみにデータベースのエンコードはUNICODEにしてあります。 ご指摘、助言等何でも構いませんのでよろしくお願いいたします。

  • 文字コードの選択

    PHP+HTML(XML)をするにおいて、最も良い文字コードは何にしたら良いでしょうか?さいきん,特に  UTF-8,UTF-16 を聞きますが、  EUC,SJISなどの方が良いのでしょうか? また、それらの特徴とは,どのようなものでしょうか?  ASCIIも良いのでしょうか?

    • ベストアンサー
    • HTML
  • visual studio2010 文字コード

    visual studio2010を使っています。Cのプログラムを書いてます。 文字セットを選ぶ箇所で ・マルチバイト文字セットを使用する ・Unicode文字セットを使用する という2つの選択肢がありますが、 上を選ぶとshift-jisの文字コードが選ばれると認識してます。 それで、下のUnicode文字セットを使用するを選んだ場合なんですが、 これはutf-16のことですか? utf-8が主流だと思っていたのでここでさすUnicodeが勝手に utf-8のことだと思ってたんですが、 visual studioで扱っている方はワイド文字で、 utf-8について調べたらASCIIにも対応できる可変長のマルチバイト という風に書いてあったので、あれ?と思い色々調べたら ウィンドウズではメモ帳などでUnicodeという表記でutf-16を指すみたいなので これも同じでutf-16なのかなと思いました。 ただ、visual studioで扱うUnicodeはワイド文字ということと、 utf-16は2バイト固定ではなく2バイト単位なだけで 4バイトで1文字を表すこともあることが書いてあったので、 これはワイド文字とは違う??と混乱してます。 それともワイド文字は2バイト固定と思ってたんですが wchar_tが2バイトずつなだけでワイド文字は1文字2バイトというわけではない ということでしょうか? それとwchar_tで2個分で1文字を表したりする使い方はするんでしょうか? まとまりのない質問になってしまいましたがよろしくおねがいします。

  • PHPの文字コードについて

    PHPとmysqlの文字コードの関係について 1.データベースは文字コード utf8_unicode_ci で作成しています。 2.以下のようにテーブルを作成しました。 CREATE TABLE `test` ( `qid` varchar(10) NOT NULL, `qtitle` varchar(255) default NULL, PRIMARY KEY (`qid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 3.show.phpの中で以下のように 出力しようとすると文字化けします。 show.phpファイルは文字コードutf8で保存しています。 <?php print($qTitle); ?> ブラウザの文字コードの設定はShift-Jisです。 ブラウザの文字コードを変えずに正しく表示させるためには どうすればいいのですか? ご教授よろしくおねがいします。

    • 締切済み
    • PHP
  • 文字コードエスケープ処理について

    現在MYSQLとPHPを使ってデータベースを構築してます。 XSSやSQLインジェクションはフォームなどに悪意のユーザがJavascriptのコードを入力するんですよね? ちょっとテストで検索フォームに Javascriptコード を入力してみたんですが何も起こりませんでした。これは処理がされていると思って良いんでしょうか?URLは画像のようになりました。

    • 締切済み
    • PHP
  • SQLServer2005と文字コード

    ある米国のJavaで作られたWebアプリケーションパッケージソフトウェアをインストールしました。環境はSQLServer2005 + Tomcat 6.0で、その上にこのパッケージがインストールされて動作しています。基本的に米国の製品なので英語を前提としていますが、今回は日本語のOS、日本語SQLServer上にインストールしました。このパッケージソフトウェアがパッチを提供しているので、それを適用しようと思いました。そこでインストラクションを読んでいるのですが、その中に「UTF-8ベースのデータベースを使っている場合は」というような記述があります。そこで初めて文字コードというものを意識し、自分の構築したSQLServer2005の文字コードを調べたいと思いました。私の知識は古くはUNIX系がEUC、Windows系がShift-JISで最近はUnicode(UTF-8方式)が主流?、という程度です。ウェブで調べたところどうもUTF-8にするには?テーブルの型をnvarcharなど「N」を付して作成しなければならないというようなことがわかりました。このアプリが使用するテーブル群はすべてパッケージが提供するSQLのスクリプトで作成したものですが、nvarcharでなくvarcharになっていました。ということは、UTF-8ではないということでしょうか?そもそも文字コードというのはテーブルのコラム単位なのでしょうか、それともデータベースとかもっと上位の単位なのでしょうか?SQLServer Management Studio Express上でデータベースなどいろいろな個所を右クリックしてプロパティを見ていますが特にUTF-8とかUnicodeといった記述は見つかりませんでした。このデータベースは何という文字コードなのでしょうか?調べ方をご存じの方、ご教示願います。よろしくお願いします。

  • 文字化け

    ORACLE(UNICODE)に対し、 SQL*PLUSから、(test.sql等)ファイルから insert文で'(1)'とう文字を入力しようとすると、 文字化けが発生します。 1)ORACLEにUNICODEで'(1)'という文字は登録可能でしょうか? 2)もし可能なら、どのような方法で可能でしょうか?(SQL*PLUSで) 以上、お願い致します

  • phpMyadminに直接入力したら文字化け

    案の定、??????になってしまいました。 PHPで作ったフォームから入力した文字ではなく、phpMyAdiminから 直接入力したら文字化けしました。 おそらく入力モードがSHIFT-JISなんだと思います。 でも、それを変更できるモードがあるのでしょうか? 初期画面の文字コードは「utf8-unicode-ci」としています。 今回はutf8でPHPプログラムするつもりです。 それらしいunicode-ciを選択しました。 直接入力して、 どうすれば文字化けしないで解決できるでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • MySQL4.1 文字コードについて

    MySQL4.1を導入したのですが一部文字が入力できないときがあります。 MySQL4.0の時は不具合はおきませんでした。 MySQLのキャラクタセットはすべてsjisに設定しました。 character_set_client sjis character_set_connection sjis character_set_database sjis character_set_results sjis character_set_server sjis character_set_system utf8 MySQL・phpでサイトを構築しているのですが 入力フォームで文章が「ソ」「表」で終わると、登録に失敗します。 shift-jisの特殊文字ですので「ソ\」「表\」のようになり、SQL文のシングルコーテーションが文字列(\')と認識されると思うので下記置き換えで大丈夫かと思いましたが、また失敗しました。 $text = str_replace("\\","\\\\",$text); $text = str_replace("'","\'",$text); MySQL4.1はホントに難しいです… お分かりになる方いましたらよろしくお願いします。

    • ベストアンサー
    • MySQL

専門家に質問してみよう