ホームページ  >  記事  >  バックエンド開発  >  PHP中国語セーブデータベースが文字化けしている場合の対処法

PHP中国語セーブデータベースが文字化けしている場合の対処法

PHPz
PHPzオリジナル
2023-04-10 09:35:46538ブラウズ

PHPでは、データベースへの保存に漢字を使用すると文字化けが発生する場合があります。これは、データベースと Web ページのエンコードに一貫性がなく、データが正しく保存されないためです。ここではいくつかの解決策を紹介します。

  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 エンコード設定

Secondly 、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. Dataエンコード変換

上記のいずれの方法でも問題を解決できない場合は、データベースに保存されている文字列エンコードがデータベース エンコードと一致していない可能性があるため、エンコード変換が必要です。変換は、PHP の iconv 関数または mb_convert_encoding 関数を使用して実行できます。

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

概要

PHP で中国語の文字をデータベースに保存する場合は、データベースと Web ページのエンコードが一致していることを確認し、接続するときにエンコードを UTF-8 に設定してください。データベースとPHPスクリプト。文字化けが発生する場合はエンコード変換をお試しください。これらの方法が問題の解決に役立つことを願っています。

以上がPHP中国語セーブデータベースが文字化けしている場合の対処法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。