2016-11-06 4 views
0

私はmysqlデータベースを持っており、 "user_job"というテーブルがあります。行の "category"には "Alpha - Αλφα"というフレーズが格納されています。 私のコードは次のとおりです。英語とギリシャ語のフレーズをmysqlデータベースから取得することはできません

<?php 
$e = mysql_query("select `category` from `user_job` where `category`='$category' "); 

$a = mysql_num_rows($e); 

?> 

私はそれを実行したときにそれは私に0の行を返します。私が "Αλφα"ギリシャ語の文字でこのギリシャ語を削除する場合、それは動作し、私に1行を返します。ここでの問題とその解決方法テーブルが "utf8_general_ci"に設定されている

+0

「utf8_general_ci」には、Αλφα[http://collat​​ion-charts.org/mysql60/mysql604.utf8_general_ci.european.html]のすべての文字が含まれているため、エンコードされていません。 –

答えて

0

これはエンコーディングの不一致のようですが、データベースのエンコーディングに適切なエンコーディングに変換することを確認することです。

ギリシャ文字は、通常ISO-8859-7としてエンコードされています。これは確かにあなたの入力の場合であれば、あなたはそうのようにそれを変換することができます

  • Iconvに:http://php.net/iconv
  • 国際空港:http://php.net/intl

    <?php 
    $category = iconv('ISO-8859-7', 'UTF-8', $category); 
    ?> 
    

    PHPは、エンコーディングの間で変換するために多くの便利な機能を提供します

どちらもデフォルトのPHPディストリビューションに付属しています。

+0

まだ動作していません – 33528

+0

入力のエンコードを検出して、変換元のエンコードが正しいかどうかを確認してください。理想的な世界では、すべてがUTF-8でなければなりませんが、残念ながら私たちはそのような人には住んでいません=( PHPを使ったmbstring拡張は、入力エンコーディングの検出を試みる能力を提供します:http://php.net/mb_detect_encoding – Kalle

関連する問題