1

これは私の問題です。データベースは ISO-8859-1 で、Web ページは UTF-8 です。クエリからアクセントを削除したいのですが、アクセントのない名前を見つけることはできますが、もしあれば私はm 見つからない (下に訛りのある名前がありますが、名前が見つかりません) 助けてください、私はここで死にかけています... 私はこれを持っています:

$el=array();     //<----------------------------------------------------vowels to remove
$el[]=iconv('UTF-8','ISO-8859-1','á');
$el[]=iconv('UTF-8','ISO-8859-1','é');
$el[]=iconv('UTF-8','ISO-8859-1','í');
$el[]=iconv('UTF-8','ISO-8859-1','ó');
$el[]=iconv('UTF-8','ISO-8859-1','ú'); 

$string='Francisco Gutiérrez';      //<----------------------------------------target


$string=strtolower($string);     ///<----------------------------------string to iso 
$string=iconv('UTF-8','ISO-8859-1',
                    $string);


$tem3="SELECT  nom||' '||app||' '||apm as NAME 
       FROM STUDENTS 
       where 

      (
       upper(
            replace(
            replace(
            replace(
            replace(
            replace(
         lower(NAME),'".$el[0]."','a'),
                       '".$el[1]."','e'),
                       '".$el[2]."','i'),
                       '".$el[3]."','o'),
                       '".$el[4]."','u')
            ) 

       like '%'||
        upper(
            replace(
            replace(
            replace(
            replace(
            replace(
         '".$string."','".$el[0]."','a'),
                       '".$el[1]."','e'),
                       '".$el[2]."','i'),
                       '".$el[3]."','o'),
                       '".$el[4]."','u')
             )||'%'
     )";
4

1 に答える 1

3

SQL CONVERT(string、destination_encoding、source_encoding)を?実行できます。これにより、変換できない文字が得られます。置換でドロップできます。

もしあなたがそうするなら

$string = iconv('UTF-8','ASCII//TRANSLIT', $string);

SELECT CONVERT(nom, 'US7ASCII', 'WE8ISO8859P1') 
FROM STUDENTS LIKE ... $string ... ;

あなたはうまくいくはずのASCIIに頼ります。

ISO-8859-1 もそうかもしれません。

于 2012-06-02T22:43:59.587 に答える