gpt4 book ai didi

php - 将 csv 导入 mySQL 数据库时出现西里尔字母编码问题

转载 作者:行者123 更新时间:2023-11-29 21:39:46 25 4
gpt4 key购买 nike

我遇到以下问题:我导入了一个包含西里尔文记录的 csv 文件,这是通过使用 HeidiSQL 数据库浏览器完成的。我用记事本打开了 .csv 并将编码更改为 utf-8,然后使用 phpmyadmin 创建数据库,并将排序规则设置为 UTF-8_general_ci。

HeidiSQL import settings

导入时我选择了UTF-8编码,导入后HeidiSQL和phpmyadmin中的一切看起来都很好,我的意思是一切都是可读的,但在我的index.php文件中不可读,其中编码也设置为utf-8通过header('内容类型:text/html; charset=utf-8'); Browser output我不知道我的错误在哪里。

这是我的index.php代码:

<?php header('Content-Type: text/html; charset=utf-8');?>
<?php include 'config.php'; ?>
<?php include 'header.php';?>


<?php
$db=new mysqli("$dbhost","$dbuser","$dbpass");
$db->select_db("$dbname") or die ("Critical error: Could not connect to database!");
$query="select * from books";
$result=$db->query($query);

//find number of rows
$num_rows=$result->num_rows;

mysql_query('SET NAMES utf8');
?>



<div id="box">
<center>

<form id="search" action="index.php" method="post">
<input type="text" name="search" placeholder"Search your book..."/>
<input type="submit" value="Search"/>
</form>
<br>
<h3>Our Books</h3>
<table border="1">
<tr id="table_header">
<td>Author</td>
<td>Title</td>
<td>Publisher</td>
<td>Year</td>
<td>Edition</td>
<td>Location</td>
<td>Holder</td>
<td>ISBN</td>
</tr>



<?php
$total=0;
$tstoke=0;
$tout=0;
for($i=0;$i<$num_rows;$i++)
{
//fetch row
$row=$result->fetch_row();
$total=$total+$row[2];
echo "<tr>";
echo "<td width=\"150\">$row[1]</td>" ;
echo "<td width=\"250\">$row[2]</td>" ;
echo "<td width=\"100\">$row[3]</td>" ;
echo "<td width=\"30\">$row[4]</td>" ;
echo "<td width=\"30\">$row[5]</td>" ;
echo "<td width=\"30\">$row[6]</td>" ;
echo "<td width=\"100\">$row[7]</td>" ;
echo "<td width=\"30\">$row[8]</td>" ;
$stoke=$row[2]-$row[3];
$tstoke=$tstoke+$stoke;
$tout=$total-$tstoke;
echo "<td width=\"30\">$stoke</td>" ;
echo "</tr>";
}
echo "</table>";
?>
</center><br>
<center>Now We Have : <?php echo $num_rows; ?> Defreent Books >> Total Books : <?php echo $total; ?> >> Total Stoke : <?php echo $tstoke; ?> >> Total Out : <?php echo $tout; ?></center>
<br>
</div>
<?php include 'footer.php'; ?>
</center>

最佳答案

我以前遇到过这个问题并找到了一个解决方案:

mysqli_set_charset($db,'utf8');

并且每当打印数据库值时都必须使用htmlentities..

即您更新的 for 循环是

echo "<table>";
for($i=0;$i<$num_rows;$i++)
{
//fetch row
$row=$result->fetch_row();
$total=$total+$row[2];
echo "<tr>";
echo "<td width=\"150\">htmlentities($row[1]);</td>" ;
echo "<td width=\"250\">htmlentities($row[2]);</td>" ;
echo "<td width=\"100\">htmlentities($row[3]);</td>" ;
echo "<td width=\"30\">htmlentities($row[4]);</td>" ;
echo "<td width=\"30\">htmlentities($row[5]);</td>" ;
echo "<td width=\"30\">htmlentities($row[6]);</td>" ;
echo "<td width=\"100\">htmlentities($row[7]);</td>" ;
echo "<td width=\"30\">htmlentities($row[8]);</td>" ;
$stoke=$row[2]-$row[3];
$tstoke=$tstoke+$stoke;
$tout=$total-$tstoke;
echo "<td width=\"30\">$stoke</td>" ;
echo "</tr>";
}
echo "</table>";

让我告诉你一件事,你必须仅通过此函数设置字符集,以便它将用于你当前的数据库连接。

标题适用于您的页面,而不适用于您的数据库。

希望这能解决您的疑问。

关于php - 将 csv 导入 mySQL 数据库时出现西里尔字母编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34633538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com