当我将字符串“Rhône”插入数据库时,剩下的就是“Rh” 这怎么可能? 是使用 utf8_general_ci 编码的 Mysql。
<?php
header( 'Content-Type: text/html; charset=utf-8' );
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Decode</title>
<head></head>
<body>
<?php
include_once ($_SERVER['DOCUMENT_ROOT'] . '/v3/functions/connect.php');
$res_id = $_POST['res_id'];
$yr_id = $_POST['yr_id'];
$yr_id=html_entity_decode($yr_id, ENT_COMPAT, "UTF-8");
if(isset($yr_id) && $yr_id<>'') {
$search = array('%C3%B4');
$replace = array('ô');
$yr_id=str_replace($search, $replace, $yr_id);
mysql_query("SET NAMES utf8");
$uQuery2="UPDATE sv_snowrepublic set yr_id='$yr_id' where res_id=$res_id limit 1";
$uResult2 = mysql_query($uQuery2);
echo 'updated';
}
$uQuery1="SELECT * FROM sv_snowrepublic where res_id=$res_id limit 1";
$uResult1 = mysql_query($uQuery1);
$row1 = mysql_fetch_assoc($uResult1);
if (mysql_num_rows($uResult1) >= 1 && isset($res_id) && $res_id>2)
{
echo "<form method='POST' action='index.php'>";
echo "<input type='hidden' size='4' value='" . $row1['res_id'] . "' name='res_id' /><br />";
$yr2_id=$row1['yr_id'];
// $yr2_id=html_entity_encode($yr2_id, ENT_COMPAT, "UTF-8");
echo mb_detect_encoding($yr2_id);
echo "<input type='text' size='200' value='" . $yr2_id . "' name='yr_id' /><br />";
echo "<br /><label for='submit'></label><input type='submit' name='submit' value=' Send '></form>";
}
?>
</body>
</html>
最佳答案
How is that possible?
将字符串 Rhône
传输到 MySQL 数据库时遇到问题。这可能有多种原因,最肯定的是所涉及的组件之一(最肯定的是 MySQL 作为服务器或客户端)在指定编码的字符串上运行,该编码与您通常称为 ô
的字符位置不匹配>。由于它是编码看起来无效的第一个位置,因此它将被切断。
您必须确保在任何情况下并且不犯任何错误(即使是配置中的最轻微错误),您处理的数据的编码始终对您来说是清晰的、正确设置和正确处理的。
这既用于输入数据库,也用于从数据库获取数据。
我想到的是:
- 您没有将编码为 UTF-8 的 php 文件保存到光盘上。
进一步:
- 您没有使用推荐的 MySQL 客户端扩展。
- 您正在使用
SET NAMES
,而不是正确设置连接编码设置。请参阅mysql_set_charset
Docs .
检查一下,但这只是猜测,发生这种情况的原因可能有很多。
关于php - 将 ô 插入 mysql 数据库是 Rhône 结果的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6975451/