2016-05-04 18 views
1

私は現在、PHPとMySQLの文字列の文字列比較に問題があります。 私は、MySQL DBから来ている変数を持っていると私はハードコードされたものとそれを比較する:MySQLとPHPの文字列の比較 - Unicodeの正規化?

$string_from_mysql = "Información" //comes from DB read; 
$test_string = "Información" //hard coded via text editor; 
$test = strpos($string_from_mysql,$test_string); -> Returns false 

問題がOに関連すると思われるが、$で文字が$ test_stringにしながら、0x00F3値を持つstring_from_mysql文字は0xC3 0xB3です。 これは明らかに、strposの「偽の」戻り値につながります。文字は「正準的には同等」ですが、同じ値ではありません。

このような状況でのアプローチは何ですか?私はNormalizerのPHPクラスを見つけました。これは実行可能でクリーンなソリューションですか?

ありがとうございました。

+2

0xf3値の文字列はLatin1としてエンコードされ、0xc3 0xb3の文字列はUTF-8でエンコードされます。 [データベース接続を設定する](http://stackoverflow.com/questions/279170/utf-8-all-the-way-through)にUTF-8を返すようにしてください。 – nwellnhof

答えて

1

nwellnhofこの接続で文字セットを設定すると、問題が解決しました。私の場合、私は使用しなければならなかったmysql_set_charset