繁体   English   中英

PHP 和 Mysql UTF-8 问题(特殊字符)

[英]Problem with PHP and Mysql UTF-8 (Special Character)

我有一个带有一个名为(ProductTitle)的文本框的表单

如果我在文本框中写入示例“Étuit”并单击“保存”,我会将数据发布到名为 Product 的表中。 ProductTitle 数据库中的结果是 Étuit。 我担心的是特殊字符。 我没有将 É 放入数据库,而是得到了 É

当我将数据库中的产品标题(“Étuit”)加载到跨度中时。 正确显示。
但是当我将它加载到文本框中以编辑产品标题时,它显示了 Étuit。

任何人都知道为什么。

我把它放在 html 头上

<head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

注意:当我点击表单上的保存时,数据使用 jquery ajax 方法发布。

在使用数据库之前尝试设置客户端编码。

mysql_query("SET NAMES 'utf8'");

如果上述方法不起作用,请使用 utf8 编码/解码功能:

<?
$string ="Étuit";
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<?
echo $string; // echo's '?tuit'
echo utf8_encode($string); // echo's 'Étuit'
?>

可能发生的情况是客户端的默认字符集未设置为 UTF-8,因此您在一个方向或另一个方向上进行换位。 此处以多种不同方式对此进行了介绍:

通常,在连接实例化之后对“SET NAMES utf8”的初始化查询将解决未来的问题,但请确保您认为存储的内容(utf8)实际上是存储的内容。 如果没有,你可能有一个清理工作。

在代码中的每个连接之前不要打扰 SET NAMES,可以使用 mysql 连接字符串中的参数:

"jdbc:mysql://hostAddress:port/databaseName?characterEncoding=UTF-8"

这篇文章解释了如何在 PHP 和 MySQL 中配置和使用 UTF-8。 希望能节省您的时间。

用于 PHP 和 MySQL 的 UTF-8 底漆

这些对我有用:

在 HTML 标头中:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

PHP连接后:

$conexion = @mysql_connect($servidor, $usuario, $contrasenha);
mysql_select_db($BD, $conexion) or die(mysql_error($conexion));
mysql_query("SET NAMES 'utf8'");

当我使用 mysqli lib 时,我只使用 set_charset 方法。

error_reporting(E_ALL);

$mysqli = new mysqli('localhost', 'login', "pass", 'database');

if ( ! $mysqli->set_charset("utf8") )
{
   printf("Error loading character set utf8: %s\n", $mysqli->error);
}

我也遇到了困难,但以下内容总是对我有用,在操作数据之前:确保按如下方式设置编码:

try{
  $dbh = new PDO($dsn, $user, $pass);
  $dbh->query("SET NAMES 'utf8'");
  print "Connected";
 }

catch(PDOException $e){
  print "Error!!   " . $e->getMessage()."<br/>";
  die();
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM