[英]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'
?>
看看utf8_encode()
和utf8_decode()
。 還要看看多字節字符串函數。
可能發生的情況是客戶端的默認字符集未設置為 UTF-8,因此您在一個方向或另一個方向上進行換位。 此處以多種不同方式對此進行了介紹:
通常,在連接實例化之后對“SET NAMES utf8”的初始化查詢將解決未來的問題,但請確保您認為存儲的內容(utf8)實際上是存儲的內容。 如果沒有,你可能有一個清理工作。
在代碼中的每個連接之前不要打擾 SET NAMES,可以使用 mysql 連接字符串中的參數:
"jdbc:mysql://hostAddress:port/databaseName?characterEncoding=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.