2012-03-22 14 views
1

AmazonのRDSを使用していますが、DBからutfデータを読み取ることができません。結果は、utf以外の文字として表示されるため、DB内のutf-8エンコードでは不正な文字として表示されます。Amazon RDS、PHPのUTF-8ユニコード問題

DBは別のMySQLデータベース(Amazon RDSではなく)から転送され、コードがそのデータベースと通信するときはすべて正常です。

私は文字セットをチェックし、すべてのテーブルに照合し、DB自体が、彼らはこの

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

IのようにUTF-8エンコーディングを使用しているすべてのUTF-8とutf_general_ci

ページですまた、このクエリ "SET NAMES utf8"を渡そうとしましたが、まだ助けになりませんでした。

私は他の誰かがRDS

Can't store UTF-8 in RDS despite setting up new Parameter Group using Rails on Heroku

と同じ問題を抱えていたし、彼らに与えられた解決策は、接続文字列に文字セットを指定した、その解決策が明らかにレールのために働いたが、中に気づきましたPHP私は接続文字列のようなものはないと思います。

これは私がBLOBなどのバイナリデータ型にこれらの列のデータ型を変更した場合、彼らが正常に動作します。また

mysqli_connect($this->host, $this->login, $this->pw, $this->database) 

をMySQLへの接続方法です。

答えて

2

接続文字列の代わりに探しているものは、おそらくmysqli::set_charset()で、デフォルトのクライアント文字セットが変更されます。

if (!$mysqli->set_charset("utf8")) { 
    printf("Error loading character set utf8: %s\n", $mysqli->error); 
} else { 
    printf("Current character set: %s\n", $mysqli->character_set_name()); 
} 
+0

このいただきありがとうございます、それは助けていない、私は多分mysqldumが適切にUnicode文字をダンプしませんでしたが、私はトイレ-mでファイル内の文字をカウントし、彼らはより少ないと思っていますファイルサイズはバイト単位であるため、おそらくいくつかの文字がユニコードに格納されていることを意味します。 – Yasser1984