Maison  >  Article  >  développement back-end  >  Comment résoudre le problème selon lequel le nom du fichier php ne peut pas être en chinois

Comment résoudre le problème selon lequel le nom du fichier php ne peut pas être en chinois

藏色散人
藏色散人original
2020-10-15 11:36:353051parcourir

La solution au problème selon lequel le nom du fichier PHP ne peut pas être en chinois : encodez et enregistrez d'abord la page Web avec utf-8, puis encodez séparément les paramètres du nom de fichier dans fopen via la fonction iconv pour éviter un chinois tronqué ; noms de fichiers.

Comment résoudre le problème selon lequel le nom du fichier php ne peut pas être en chinois

Recommandé : "Tutoriel vidéo PHP"

Le problème qui fopen en php ne peut pas créer un fichier avec un chinois nom de fichier

Le jeu de graphiques de la page Web précédente utilisait utf-8, et le fichier utilisait également utf-8. Ensuite, le problème est apparu lors de l'utilisation de fopen() pour créer un fichier avec un nom de fichier chinois. le nom du fichier était tronqué !

J'ai vérifié beaucoup de documents et essayé de nombreuses méthodes, mais je n'ai pas pu le résoudre. Je pensais utiliser d'autres méthodes pour contourner ce problème, mais tout à coup, il m'est venu à l'esprit que le codage de texte par défaut de Windows est. ansi, puis j'ai cherché à nouveau et confirmé. Afin de comprendre cela, ma page Web doit également être codée en ansi afin que le nom du fichier créé ne soit pas tronqué.

Ensuite, j'ai commencé à vérifier, j'ai enregistré la page Web avec ansi et j'ai supprimé l'instruction chartset. C'était ok, mais le contenu de la page Web était tronqué. Plus tard, je me suis souvenu que cette page Web incluait également d'autres pages Web, alors je changé l'inclusion La page Web a également été modifiée en ansi pour enregistrer, haha ​​​​tout va bien

La programmation est vraiment un travail qui repose sur l'accumulation Si je n'avais jamais vu que l'encodage par défaut de Windows est ansi, alors ce problème sera résolu en un rien de temps.

ps : f12967df63443ea537a7297ed50f8542 placé dans b2386ffb911b14667cb8f0f91ea547a76e916e0f7d1e588d4f442bf645aedb2f Cela ne fonctionnait qu'avant

Plus tard, j'ai pensé à une meilleure solution. La page Web est toujours codée et enregistrée en utf-8. fopen() est codé séparément. PHP a iconv() est un programme qui modifie l'encodage. Il convertit utf-8 en gb2312 pour éviter les noms de fichiers chinois tronqués

test.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<title>标题:{title}</title>
</head>
<body>
<b>此新闻的内容:</b>{content}
</body>
</html>

test. .php

<?php
 
  //实际应用中很可能是查询数据库取内容。
  $rows = array(array("替换标题1","替换内容1"),array("替换标题2","替换内容2"));
  $filename = "tmp.htm";
  foreach($rows as $id => $val){
    $title = $val[0];
    $content = $val[1];
    $pagename = "测试".$id.".html"; 
    //对文件名的编码,避免中文文件名乱码
    $pagename = iconv("UTF-8", "GBK", $pagename); 
     
    //读取模板
    $tmpfile = fopen($filename,"r");
    $string = fread($tmpfile,filesize($filename));
    $string = str_replace("{title}",$title,$string);
    $string = str_replace("{content}",$content,$string);
    fclose($tmpfile);
    //写新文件
    $newpage = fopen($pagename,"w");
    fwrite($newpage,$string);
    fclose($newpage);
     
  }
  echo "创建成功!";
?>

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!

Déclaration:
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