Maison > développement back-end > Problème PHP > Que faire si les caractères chinois php sont écrits dans des fichiers tronqués

Que faire si les caractères chinois php sont écrits dans des fichiers tronqués

PHPz
Libérer: 2023-04-25 17:49:37
original
603 Les gens l'ont consulté

Ces dernières années, le développement de la technologie des réseaux a apporté beaucoup de commodité à nos vies, notamment dans le domaine du développement de programmes. En tant que développeur, j'ai rencontré un problème concernant les caractères tronqués écrits dans des fichiers. Après un certain temps pour résoudre le problème, j'aimerais partager mon expérience ici.

Source du problème

Dans mon projet, il est nécessaire d'écrire une variable qui stocke un grand nombre de caractères chinois dans un fichier. J'ai d'abord utilisé ce qui est probablement la méthode la plus courante et la plus simple : écrire directement la chaîne entière, en utilisant le code suivant :

$file = fopen("test.txt", "w");
fwrite($file, $str);
fclose($file);
Copier après la connexion

Mais lorsque j'ai ouvert test.txt, j'ai constaté que tous les caractères chinois à l'intérieur étaient tronqués.

Analyse du problème

Premier coup d'oeil à la documentation officielle, vous pouvez voir que la description de la fonction fwrite() mentionne :

fwrite — 将内容写入文件中
int fwrite ( resource $handle , string $string [, int $length ] )
Copier après la connexion

Le deuxième paramètre est une chaîne, c'est ce que nous voulons écrire. Mais s'il y a des caractères chinois dans la chaîne (y compris des caractères japonais, coréens et autres caractères non anglais), vous devez y prêter attention.

Parce que dans les ordinateurs, les caractères sont représentés par des nombres binaires. L'anglais occupe généralement un octet, soit 8 bits, tandis qu'un caractère chinois nécessite 2 à 3 octets. Cela pose un problème : si nous écrivons des nombres binaires chinois directement dans un fichier, des caractères tronqués peuvent apparaître en raison des différents systèmes d'exploitation.

Solution

Étant donné que l'essence du problème est que l'encodage des caractères est différent, nous pouvons le résoudre en utilisant le même encodage.

En PHP, l'encodage de la chaîne est spécifié et peut être exploité à l'aide de la bibliothèque mbstring. Par conséquent, nous pouvons convertir la chaîne dans le même encodage avant de l'écrire, comme UTF-8 :

$file = fopen("test.txt", "w");
fwrite($file, mb_convert_encoding($str, "UTF-8"));
fclose($file);
Copier après la connexion

De cette façon, nous pouvons éviter le problème des caractères chinois tronqués. Si vous trouvez toujours des caractères tronqués lors de l'ouverture du fichier, cela peut être dû au fait que l'encodage par défaut de l'éditeur de texte que vous utilisez n'est pas UTF-8. Dans ce cas, vous pouvez utiliser l'éditeur pour ouvrir le fichier et convertir manuellement l'encodage en. UTF-8, et vous verrez Correct Chinese.

Résumé

Cet article explique comment éviter le problème des caractères chinois tronqués lors de l'écriture de fichiers à l'aide de PHP. La clé est d’être conscient des problèmes de codage de caractères et d’effectuer une conversion de codage de caractères avant d’écrire. J'espère que cela aidera les lecteurs qui ont le même 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