首頁  >  文章  >  後端開發  >  php中文保存資料庫亂碼怎麼辦

php中文保存資料庫亂碼怎麼辦

PHPz
PHPz原創
2023-04-10 09:35:46538瀏覽

在 PHP 中,若使用中文字元儲存到資料庫中,可能會出現亂碼的狀況。這是因為資料庫和網頁編碼不一致,導致資料不正確地被儲存。以下是一些解決辦法。

  1. 資料庫編碼設定

首先確認資料庫的編碼是否為 UTF-8(或其他支援中文的編碼)。如果不是,可以在資料庫中設定編碼為 UTF-8。

如果使用MySQL 資料庫,則在建立資料庫和資料表時,需要指定編碼:

CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE tablename (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
    age INT(3)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. PHP 編碼設定

其次,在PHP 腳本中設定編碼為UTF-8:

header('Content-Type: text/html; charset=utf-8');

也可以在PHP 設定檔php.ini 中設定:

default_charset = "utf-8"
  1. 資料庫連線設定

在連接資料庫時,也需要設定編碼為UTF-8。如果使用PDO 連接資料庫,可以這樣寫:

$dsn = "mysql:host=localhost;dbname=dbname;charset=utf8mb4";
$dbh = new PDO($dsn, $user, $password);

如果使用MySQLi 連接資料庫,可以這樣寫:

$mysqli = new mysqli("localhost", "user", "password", "dbname");
mysqli_set_charset($mysqli, "utf8mb4");
  1. 資料編碼轉換

如果以上方法都無法解決問題,那麼可能是儲存到資料庫的字串編碼和資料庫編碼不一致,需要進行編碼轉換。可使用 PHP 的 iconv 函式或 mb_convert_encoding 函式進行轉換。

$str = "你好";
$str = iconv('gbk', 'utf-8', $str);
//或
$str = mb_convert_encoding($str, 'utf-8', 'gbk');

總結

在 PHP 中儲存中文字元到資料庫時,要確認資料庫和網頁編碼一致,並在連接資料庫和 PHP 腳本中設定編碼為 UTF-8。若出現亂碼,可嘗試進行編碼轉換。希望這些方法能幫助你解決問題。

以上是php中文保存資料庫亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn