2012-08-28 8 views
5

私はデータベースにアクセント付き文字を使用/保存するWebサイトで作業しています。私は、例えば、config.phpののcharset変数が設定と一致するように設定されたページテンプレートがあります。CodeIgniter設定文字セットとUTF-8サポート

<meta charset="<?php echo $this->config->item('charset');?>"> 

$config['charset']UTF-8、フォームに設定されているときに私がいる問題は、あります妥当性検査が失敗し、アクセント付き文字が含まれていた場合には送信されなかったかのようです。たとえば、文字列のどこかにáが含まれていると、必要なフィールドが返されます。文字列マイナスáは正常に動作します。

私は$config['charset']にISO-8859-1を変更し、PHPのutf8_encode()utf8_decode()と、データベースから取得した後/挿入する前にUTF-8にテキストを変換することによって、この作業を取得するために管理してきました。これが最善の方法ですか、CodeIgniterで作業しているアクセント記号の付いたUTF-8を入手するために必要なものがありませんか?

アドバイスありがとうございます。

+0

どこにでもUTF-8を設定してください。何がうまくいかないかは分かりにくいですが、ある時点で異なるキャラクタセットを持っている可能性があります。必ず読んでください:http://www.joelonsoftware.com/articles/Unicode.html。 – Styxxy

答えて

12

どこでもUTF-8を使用し、PHPとMySQLの両方がUTF-8を処理するように設定する必要があります。 HTMLで

、メタタグを追加:

<meta charset="utf-8" /> 

をそして、UTF-8形式で保存します。ここはhow to do that in notepad++です。

、UTF-8をサポートしてテーブルを作成するために、MySQLのテーブルを定義します。

DEFAULT CHARSET=utf8; 

との接続を設定します。

php.ini
mysql_set_charset('utf8', $con); 

Enable UTF-8

default_charset = "utf-8" 

完全なマニュアルチェックの場合Handling Unicode Front To Back In A Web App

+0

答えとリンクに感謝します - 私は、UTF-8が全面的に使用されていることを確認します。フォームの検証の問題は、$ config ['charset']の設定が 'utf-8'(すべて小文字)ではなく 'UTF-8'(すべて大文字)に設定されているためです。なんらかの理由で、これが大文字の 'UTF-8'のデフォルト設定は機能しません(少なくとも私の設定ではありません)。 –

+0

クールで幸せに助けてください:) +1 – Kuf

+0

Googleで見つけた人のための小さなコメント - この問題の代替ソースは、テーブルのエンコーディングである可能性があります_またはcolumn_(はい、テーブルのエンコーディングを変更しても、 ) - この場合、UTF-8文字列を含む列内の値を編集すると、「不正な文字列値」という警告が表示され、単にcodeigniterでクエリを実行すると表示されません。 。 – MarcinWolny

関連する問題