php - 将 ô 插入 mysql 数据库是 Rhône 结果的一部分

标签 php mysql character-encoding

当我将字符串“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_charsetDocs .

检查一下,但这只是猜测,发生这种情况的原因可能有很多。

关于php - 将 ô 插入 mysql 数据库是 Rhône 结果的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6975451/

相关文章:

php - 本地PHP测试环境无法建立MySQL数据库连接

mysql - MySQL 中的字符集和排序规则优先级

html - 带有 doctype 4.01 Transitional 的 html 中的标题标签之前有哪些元标签?

php - paypal获取多个item_number

php - MySql 查询省略了最后记录的行

php - 将 Base64 jpeg 图像传递给 og :image

PHP 为 Smarty 选择

MYSQL 在不存在的日期中返回零,并计算特定日期存在的行数

php - TYPO3 - upload_max_filesize 安装错误

mysql - 在有问题的数据库上进行不区分重音的搜索