一些字符(μ)显示为 ??.php/mysql

Posted

技术标签:

【中文标题】一些字符(μ)显示为 ??.php/mysql【英文标题】:Some characters(μ) showing as ??.php/mysql 【发布时间】:2017-01-19 12:35:28 【问题描述】:

我正在尝试从 mysql 数据库中读取数据。在我的数据库中,我检查了数据显示为'μ',并且字符集正确设置为'UTF-8'。但是当我在 php 中运行以下代码时,输​​出 'μ' 显示为 '?'。我通过添加不同类型的字符集和所有脚本尝试了很多方法,但都是徒劳的,仍然显示为'?'。谁能帮帮我。

我的脚本如下:

<?php
  ini_set("default_charset", "UTF-8");
  header('Content-type: text/html; charset=UTF-8');

  error_reporting(E_ALL);
  ini_set("display_errors", 1);

  $tender_id=$_GET['tender_id'];

  include('config_sqli.php');
?>
<?php
  $result=mysqli_query($con,"SELECT * FROM comparitive_st_sup WHERE 
                      id='$member[$x]' and tender_id='$tender_id'");
  while($row=mysqli_fetch_assoc($result))

  $prod_description1 = $row['prod_description'];
  $prod_description = mysqli_real_escape_string($con, $prod_description1);
  
  echo $prod_description;
  echo '<br>';
?>

【问题讨论】:

试试 utf8_encode:php.net/manual/en/function.utf8-encode.php 我看到类似 $value = utf8_encode($value);我试图在我的代码中实现,但它的显示?只要。需要检查到底是什么问题。 您还需要在mysql 中设置编码。看看***.com/questions/14068616/… 警告:使用mysqli 时,您应该使用parameterized queries 和bind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了一个严重的SQL injection bug。 切勿$_POST$_GET 数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 感谢@tadman 提供的信息。感谢。一定要实现。 【参考方案1】:

试试这个,

在执行实际查询之前运行以下查询:

mysqli_query($con, "SET NAMES 'utf8'");

试试这个你的mysqli连接

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->set_charset("utf8"); 
// be careful, this method can be not working (mantainers builds bugs for old php releases), first example is works fine

希望对你有所帮助。

【讨论】:

完美。它运作良好。非常感谢您的宝贵时间。 一个小疑问。如何使用 mysqli_query($con, "SET NAMES 'utf8'");使用 mysql_query。我的意思是没有 mysqli 与 mysql 一起使用:mysql_query("SET NAMES 'utf8'");

以上是关于一些字符(μ)显示为 ??.php/mysql的主要内容,如果未能解决你的问题,请参考以下文章

盘点一些嵌入式实时系统,你用过哪些?

使用 php mysql 的地理定位内容

PHP Mysql字符集utf8mb4支持Emoji表情

Android应用程序解码来自PHP MySql数据库的JSON响应,没有特殊字符

PHP编码问题

在 PHP/MYSQL 中计算过滤器记录 [重复]