簡體   English   中英

在PHP中編碼問題utf-8

[英]Encoding issue utf-8 in PHP

使用此代碼,我在UTF-8中遇到了編碼錯誤:

$bdd->query("SET NAMES 'utf8'");

$id = $_SESSION['userid'];
$zero = 0;

$query_count = $bdd->query("SELECT count(*) FROM notification WHERE id_proprio = :id AND readed = :zero ORDER BY id DESC LIMIT 0,5",array("id"=>$id,"zero"=>$zero));
$count = $query_count[0]['count(*)'];
if($count >= 1)
{
  ?>

    <?php
    $query_notification = $bdd->query("SELECT * FROM notification WHERE id_proprio = :id AND readed = :zero ORDER BY id DESC LIMIT 0,5",array("id"=>$id,"zero"=>$zero));
    foreach($query_notification as $row)
    {
      $id = $row['id_exp'];
      $bdd->bind("id_exp", $id);
      $user_exp = $bdd->query("SELECT * FROM users WHERE id = :id_exp");
      ?>
      <li id="notif<?php echo $row['id']; ?>" 
        onMouseOver="this.style.backgroundColor='#f0f0f0'"
        onMouseOut="this.style.backgroundColor='#ffffff'"
        onclick="document.location.href='../<?php echo $row['link']; ?>'"
        style="cursor: pointer;">

        <div class="media" style="cursor: pointer;">
              <?php 
                if(!empty($user_exp[0]['avatar']))
                {
                  ?>
                    <a class="pull-left" href="#">
                      <img src="<?php echo base64_decode($user_exp[0]['avatar']) ?>" class="img-polaroid" style="max-width: 30px;margin-right:5px;">
                    </a>
                  <?php
                }
              ?>
              <div class="media-body" style="margin-left:5px;" style="cursor: pointer;" >
                <h5 class="media-heading" style="font-weight: 500;cursor: pointer;"><a style="color:grey;text-decoration:none;cursor:pointer;" onclick="supprimerNotif(<?php echo $row['id']; ?>,<?php echo $row['id_proprio']; ?>)"></h5></a>
                <p style="cursor: pointer;"> <?php echo tronque(utf8_decode($row['contenu']),50); ?></p>

                   <!-- <a href="../check/voirSource.php?id=<?php echo $row['id']; ?>" class="birne_unselectable btn btn-primary"><i class="icon-white icon-eye-open"></i></a> 
                    <a class="birne_unselectable btn btn-danger"><i class="icon-white icon-eye-close"></i></a>
                -->
              </div>
            </div>
        </li>
        <li class="divider"></li>
        <?php
    } ?>

  <?php
}else
{
  $id = intval($_SESSION['userid']);
  $un = 1;
  $query_notification = $bdd->query("SELECT * FROM notification WHERE id_proprio = :id AND readed = :un ORDER BY id DESC LIMIT 0,5",array("id"=>$id,"un"=>$un));

  $query_count = $bdd->query("SELECT count(*) FROM notification WHERE id_proprio = :id AND readed = :un ORDER BY id DESC LIMIT 0,5",array("id"=>$id,"un"=>$un));      
  $count = $query_count[0]['count(*)'];
  if($count == 0)
  {
    echo "Aucune activité récente de vos amis";
  }
  foreach($query_notification as $row)
    {

      $id = $row['id_exp'];
      $bdd->bind("id_exp", $id);
      $user_exp = $bdd->query("SELECT * FROM users WHERE id = :id_exp");
      ?>
      <li id="notif<?php echo $row['id']; ?>" 
        onMouseOver="this.style.backgroundColor='#f0f0f0'"
        onMouseOut="this.style.backgroundColor='#ffffff'"
        onclick="document.location.href='../<?php echo $row['link']; ?>'"
        style="cursor: pointer;">
        <div class="media">
              <?php 
                if(!empty($user_exp[0]['avatar']))
                {
                  ?>
                    <a class="pull-left" href="#">
                      <img src="<?php echo base64_decode($user_exp[0]['avatar']) ?>" class="img-polaroid" style="max-width: 30px;margin-right:5px;">
                    </a>
                  <?php
                }
              ?>
              <div class="media-body" style="margin-left:5px;">
                <h5 class="media-heading" style="font-weight: 500;"><a style="color:grey;text-decoration:none;cursor:pointer;" onclick="supprimerNotif(<?php echo $row['id']; ?>,<?php echo $row['id_proprio']; ?>)"></h5></a>
                <p> <?php echo tronque(utf8_decode($row['contenu']),50); ?></p>

                   <!-- <a href="../check/voirSource.php?id=<?php echo $row['id']; ?>" class="birne_unselectable btn btn-primary"><i class="icon-white icon-eye-open"></i></a> 
                    <a class="birne_unselectable btn btn-danger"><i class="icon-white icon-eye-close"></i></a>
                -->
              </div>
            </div>
        </li>
        <li class="divider"></li>
        <?php
    } 
}

函數tronque()對字符串進行微調,我們使用$ bdd的MySQL POO API。

此代碼返回以下帶有“?”的字符串 而不是排除的“é”,例如:

機器人馬克西姆發表評論

如何更正此編碼問題? 感謝您日后的幫助!

您可能需要在響應標頭中將UTF8設置為字符集

header("Content-Type: text/html; charset=utf-8");


還是met標簽(例如HTML5的示例):

<meta charset="UTF-8">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM