2012-01-14 10 views
0

私はCodeIgniter/MySQLを使用してアプリケーションを開発しています。昨夜、データベースにタイトルを格納しました 「HTML5のプレースホルダ属性」 データベースから取得して表示するときに保存した後、次のような奇妙な文字が表示されます: "HTML5?²sプレースホルダ属性"。これらの(?²s)タイプの文字をPHPで削除するにはどうすればよいですか?

どのようにこれらの変な文字を避けることができますか?

+0

文字エンコードが一致しない可能性があります。 CodeIgniterはあなたのためにこれを処理する必要があります。データベースのエンコーディングとは何ですか?エンコーディングはどのように出力されますか? –

+0

@MichaelMior私のアプリケーションのconfig.phpには、私のキャラクタセットは$ config ['charset']であり、あなたのアプリケーションの 'config.php'に' $ config ['charset'] = "UTF- ] = 'UTF-8'; –

+0

出力時に正しい文字セットがページで使用されていることを確認できますか?また、データベースに接続し、 'SET NAMES utf8;'を使用して、影響を受けた行を検索して正しく格納されていることを確認してください。 –

答えて

0

データを格納しているデータベーステーブルとUTF-8で保存するように設定されている必要があります。また、データを表示するhtmlページもUTF-8エンコーディングに明示的に設定する必要があります。

あなたの例のアプリケーションのURL(seekphp.com/look/phpquery-jquery-port-to-php/1758)を示す(Firefox用のFirebugを介して):

Response Headers 
Date Sat, 14 Jan 2012 06:26:31 GMT 
Server Apache/2.2.19 (Unix) mod_ssl/2.2.19 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 
X-Powered-By PHP/5.2.17 
Keep-Alive timeout=5, max=100 
Connection Keep-Alive 
Transfer-Encoding chunked 
Content-Type text/html 

なく正しくUTF-8でエンコードされた出力あなたは、文書のHEADセクションにmetaタグを出力を通して、あなたのHTMLをエンコードすることができる最後の行が

Content-Type text/html; charset=UTF-8 

ように表示されます:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

か、PHPは、ヘッダでこれを設定することができます:

header ('Content-type: text/html; charset=utf-8'); 
+0

テーブルコレクションを" utf8_bin "とHTML charset = UTF-8"に設定しました。しかし、同じ問題が発生します。 –

+0

私の頭の部分にこのタグがありますが、問題は解決しません。 –

+0

-1 content-typeはすでに 'meta'タグで正しく設定されています。 –

0

を、私は、テキストエディタからデータをコピーし、phpMyAdminの中でそれを貼り付けたとき、私は同様の問題がありました。これをやっているのであれば、テキストエディタは異なるエンコーディングを使用している可能性があります。メモ帳のような単純なテキストエディタにデータをコピーし、アポストロフィを手動で置き換えることをお勧めします。手動で 'with'を置き換えてください。正常に動作するはずです。

+0

申し訳ありませんが、私の最後の文では、2つの異なるアポストロフィーが表示されます。 http://en.wikipedia.org/wiki/Apostrophe 「曲がった」アポストロフィをデータに入れた場合は、それを置き換えます。 – MRashid

+0

テキストエディタ "HTML5のプレースホルダ属性"に行を貼り付け、phpmyadminに送信します。これは「HTML5?²sプレースホルダ属性」になります。だから、私はこの( ')HTMLエンティティまたはストリップを私の行から作ることができますか? –

+0

1)まずメモ帳にコピーして貼り付けます。 2)( ')を削除し、適切な(')を追加します。 3)phpmyadminでコピー&ペーストします。 これが機能するかどうかを確認してください。その後、テキストエディタでテキストエンコーディングを変更することができます。 – MRashid

-1

私はutf-8 charsetに関連する問題があります。私はウェブ上で(まあまあではありませんが)ずっとずっとずっとずっと前から、最良のアドバイスがありました。ヘッダーの文字セットを "UTF-8"に設定しています。

しかし、xamppを使って私のマシン上でローカルにWebアプリケーションを開発していました(そして、コードをデバッグするときに2つを区別するためにwampを使用することもあります)。すべてがうまくいっていた=)。しかし、私はそれをオンラインでアップロードするとすぐに、その結​​果は気にならないものでした( "iso-8859-1"のような別の文字セットにヘッダーを設定した場合に発生するエラーの種類)。 私のコードのすべてのヘッダーは、デフォルトの文字セットとしてUTF-8を持っていますが、私はまだ同じ "象形文字"を持っています。その後、あなたは私の問題は私のコードではなく、それを実行していたphp.iniというアイデアを教えてくれた。私のローカルマシンがphp 5.5を実行していたことがわかり、私のWebアプリケーションをアップロードしたcpanelは、 。 さて、私のcpanelがデフォルトでPHP 5.5に設定されているphpのバージョンを変更したとき、私はみんな=信じています。それはマシンのローカルホストにあるように魅力的でした。

:私と同じ問題があったら、あなたのPHPが5.5バージョンであることを確認してください。私はこのcozを投稿しています。乾杯!

+0

この回答全体を「PHP 5.5を使用する」に置き換えることができます。残りは不要です。 –

+0

=)ありがとうございます**マット** – CodeZero

関連する問題