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);
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 ] )
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);
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!