jQuery Autocomplete土耳其语特殊字符问题

时间:2011-03-24 11:49:40

标签: php jquery ajax autocomplete

我遇到土耳其语特殊字符问题我的编码系统在标题和服务器中都是ISO-8859-9字符集。

//Database connections
include_once("ogr_con.php");
require_once("oraunit.php");

function strtoupper_tr($string){
  $upper=array("ü" => "Ü", "ö" => "Ö", "ğ" => "Ğ", "ş" => "Ş", "ç" => "Ç", "i" => "İ", "ı" => "I");
  return strtoupper(strtr($string,$upper));
}

function strtolower_tr($string){
  $low=array("Ü" => "ü", "Ö" => "ö", "Ğ" => "ğ", "Ş" => "ş", "Ç" => "ç", "İ" => "i", "I" => "ı");
  return strtolower(strtr($string,$low));
}

$adi= strtolower_tr($_GET["q"]);
$adi[0]=strtoupper($adi[0]);
$soyadi= strtoupper_tr($_GET["q"]);
if (!$adi) return;

$adiquery="SELECT K.ADI||' '||K.SOYADI AS FLNAME 
           FROM personel.kisi k 
           WHERE K.ADI LIKE '%".$adi."%' OR K.SOYADI LIKE '%".$soyadi."%')";
$aq=oraArray($con, $adiquery, array());
if(is_array($aq)){
    while(list($sno,$u)=each($aq)){
        $uadi = $u['FLNAME'];
        echo "$uadi\n";
    }
}
  1. 函数strtoupper_trstrtolower_tr不适用于特殊字符。
  2. $uadi - 返回的值未在文本框中正确显示。

    <script type="text/javascript">
    $(document).ready(function() {
    $("#fuadsoyad").autocomplete("get_name.php", {
    width: 260,
    matchContains: true,
    selectFirst: false
    });
    });
    </script>

  3. 任何人都可以帮我解决这个问题吗? 你有什么建议我这样做的?

5 个答案:

答案 0 :(得分:1)

处理特殊字符时的一般建议:使用UTF-8字符集:它应该支持您的应用程序所需的所有字符,无论您需要何种语言。

使用Ajax时它会很方便,因为Ajax的标准字符集是UTF-8。

答案 1 :(得分:1)

我解决了这个问题。让我解释一下如果将来有人可能面对它。 选择所有需要的数据并将其放在一个变量中,如下所示为$ hocalist

$adiquery="SELECT K.ADI||' '||K.SOYADI AS FLNAME 
           FROM personel.kisi k 
           WHERE K.ADI LIKE '%".$adi."%' OR K.SOYADI LIKE '%".$soyadi."%')";

$aq=oraArray($con, $adiquery, array());
$hocalist = "";
foreach($aq as $row) {
$hocalist .= ($hocalist != "" ? "," : "")."{label:'".addslashes($row[FLNAME])."',ID:'$row[KNO]'}";
}

之后将此变量作为数组传递给JS,如下所示。

<script type="text/javascript">
$(document).ready(function() {
var hocalistesi = new Array(<?= $hocalist; ?>);
$("#fuadsoyad").autocomplete(hocalistesi, {
minChars: 0,
max: 50,
width: 460,
autoFill: false,
matchContains: true,
formatItem: function(row, i, max) {
 return row.label;
},
formatMatch: function(row, i, max) {
 return row.label;
},
formatResult: function (row) {
 return row.label;
}
});
});
</script> 

当然,如果我们谈论效率,它不是那么有效但是使用不同的字符集可能会被接受为解决方案。 希望会有所帮助

答案 2 :(得分:0)

您需要将.js文件本身保存为“Unicode”,例如在记事本中:
另存为 - &gt;编码下拉 - &gt; Unicode的

答案 3 :(得分:0)

请参阅以下blog, 它提出了键盘扩展。完整的组合列表是:

  • 为字母'ğ',使用'Alt Gr'+'g';
  • 为'ş'字母,使用'Alt Gr'+'s';
  • 为字母'ç',使用'Alt Gr'+'c';
  • 为字母'ü',使用'Alt Gr'+ 'U';
  • 为'ö'字母,请使用'Alt Gr'+ 'O';
  • 为字母'ı',使用'Alt Gr'+ 的 'i'。

答案 4 :(得分:0)

尝试iconv(“windows-1254”,“UTF-8”,$ text);