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

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

PHPz
發布: 2023-04-10 10:25:46
原創
576 人瀏覽過

在 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板