Maison > développement back-end > Problème PHP > Que faire si la base de données de sauvegarde php chinoise est tronquée

Que faire si la base de données de sauvegarde php chinoise est tronquée

PHPz
Libérer: 2023-04-10 10:25:46
original
576 Les gens l'ont consulté

En PHP, si vous utilisez des caractères chinois pour enregistrer dans la base de données, des caractères tronqués peuvent apparaître. En effet, l'encodage de la base de données et de la page Web est incohérent, ce qui entraîne un stockage incorrect des données. Voici quelques solutions.

  1. Paramètres d'encodage de la base de données

Confirmez d'abord si l'encodage de la base de données est UTF-8 (ou un autre encodage prenant en charge le chinois). Sinon, vous pouvez définir le codage dans la base de données sur UTF-8.

Si vous utilisez une base de données MySQL, vous devez spécifier l'encodage lors de la création de la base de données et de la table de données :

CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Copier après la connexion
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;
Copier après la connexion
  1. Paramètres d'encodage PHP

Deuxièmement, définissez l'encodage sur UTF-8 dans le script PHP :

header('Content-Type: text/html; charset=utf-8');
Copier après la connexion

peut également être configuré en PHP Définissez dans le fichier php.ini :

default_charset = "utf-8"
Copier après la connexion
  1. Paramètres de connexion à la base de données

Lors de la connexion à la base de données, vous devez également définir l'encodage sur UTF-8. Si vous utilisez PDO pour vous connecter à la base de données, vous pouvez écrire comme ceci :

$dsn = "mysql:host=localhost;dbname=dbname;charset=utf8mb4";
$dbh = new PDO($dsn, $user, $password);
Copier après la connexion

Si vous utilisez MySQLi pour vous connecter à la base de données, vous pouvez écrire comme ceci :

$mysqli = new mysqli("localhost", "user", "password", "dbname");
mysqli_set_charset($mysqli, "utf8mb4");
Copier après la connexion
  1. Conversion de l'encodage des données

Si aucune des réponses ci-dessus Les méthodes peuvent résoudre le problème, il peut alors s'agir de la chaîne enregistrée dans la base de données. L'encodage est incohérent avec l'encodage de la base de données et nécessite une conversion d'encodage. La conversion peut être effectuée à l'aide de la fonction iconv de PHP ou de la fonction mb_convert_encoding.

$str = "你好";
$str = iconv('gbk', 'utf-8', $str);
//或
$str = mb_convert_encoding($str, 'utf-8', 'gbk');
Copier après la connexion

Résumé

Lorsque vous enregistrez des caractères chinois dans la base de données en PHP, assurez-vous que l'encodage de la base de données et de la page Web est cohérent et définissez l'encodage sur UTF-8 dans la base de données de connexion et le script PHP. Si des caractères tronqués apparaissent, essayez d'encoder la conversion. J'espère que ces méthodes pourront vous aider à résoudre le problème.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal