【问题标题】:jQuery Autocomplete Turkish special character problemsjQuery Autocomplete 土耳其语特殊字符问题
【发布时间】:2011-07-22 01:50:46
【问题描述】:

我对土耳其语特殊字符有疑问,我的编码系统是标头和服务器中的 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>

谁能帮我解决这个问题?
你建议我怎么做?

【问题讨论】:

标签: php jquery ajax autocomplete


【解决方案1】:

试试 iconv("windows-1254","UTF-8",$text);

【讨论】:

    【解决方案2】:

    见下面blog, 它提出了键盘扩展。完整的组合列表是:

    • 对于字母 'ğ',使用 'Alt Gr' +'g';
    • 对于字母“ş”,使用“Alt Gr”+“s”;
    • 对于字母“ç”,使用“Alt Gr”+“c”;
    • 对于字母“ü”,使用“Alt Gr”+ '你';
    • 对于字母“ö”,使用“Alt Gr”+ 'o';
    • 对于字母“ı”,使用“Alt Gr”+ “我”。

    【讨论】:

      【解决方案3】:

      我解决了这个问题。让我解释一下,如果将来有人可能会面对它。 选择所有需要的数据并将其放入一个变量中,如下所示 $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> 
      

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-05-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-20
            • 1970-01-01
            相关资源
            最近更新 更多