簡體   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