Maison  >  Article  >  développement back-end  >  Que dois-je faire si le nom du nouveau fichier php est tronqué ?

Que dois-je faire si le nom du nouveau fichier php est tronqué ?

藏色散人
藏色散人original
2022-11-04 10:52:211596parcourir

Solutions aux noms tronqués des nouveaux fichiers PHP : 1. Utilisez la fonction "iconv" ou "mb_convert_encoding" pour convertir l'encodage des caractères ; 2. Utilisez la méthode "function convertEncoding($string){...}" pour réaliser la conversion en fonction aux paramètres du système Juste du code.

Que dois-je faire si le nom du nouveau fichier php est tronqué ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 8.1, ordinateur Dell G3.

php Que dois-je faire si le nom du nouveau fichier est tronqué ?

Sous Windows, lorsque PHP appelle les fonctions mkdir(), file_put_contents() et fopen() pour créer un nom de répertoire ou de document avec des caractères chinois, des caractères tronqués apparaissent.

La raison

Après avoir vérifié les informations, elle est liée au jeu de caractères du système.

  • windows (chinois simplifié), le jeu de caractères par défaut est : gbk

  • windows (chinois traditionnel), le jeu de caractères par défaut est : big5

  • linux, le jeu de caractères par défaut est : utf-8

Solution

Utilisez la fonction iconv ou mb_convert_encoding pour convertir l'encodage des caractères.

//将字符串 str 从 in_charset 转换编码到 out_charset。
string iconv ( string $in_charset , string $out_charset , string $str )
//将 string 类型 str 的字符编码从可选的 from_encoding 转换到 to_encoding。
string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding = mb_internal_encoding() ] )

Convertissez l'encodage en fonction des paramètres du système. La méthode est la suivante :

<?php
/**
 * 转换字符编码
 * @param $string
 * @return string
 */
function convertEncoding($string){
    //根据系统进行配置
    $encode = stristr(PHP_OS, &#39;WIN&#39;) ? &#39;GBK&#39; : &#39;UTF-8&#39;;
    $string = iconv(&#39;UTF-8&#39;, $encode, $string);
    //$string = mb_convert_encoding($string, $encode, &#39;UTF-8&#39;);
    return $string;
}

Exemple de code tronqué

<?php
#示例1
$dir = __DIR__ . &#39;/中英文目录Test1&#39;;
mkdir($dir); 
//目录名:涓嫳鏂囩洰褰昑est1
#示例2
$fileName = __DIR__ . &#39;/中英文档名Test2.txt&#39;;
file_put_contents($fileName, &#39;文件内容Test2&#39;);
//文件名:涓嫳鏂囨。鍚峊est2.txt
//文件内容:文件内容Test2
#示例3
$fileName = __DIR__ . &#39;/中英文档名Test3.txt&#39;;
$fp = fopen($fileName, &#39;w&#39;);
fwrite($fp, &#39;文件内容Test3&#39;);
fclose($fp);
//文件名:涓嫳鏂囨。鍚峊est3.txt
//文件内容:文件内容Test3
?>

Exemple de solution

<?php
#示例1
$dir = __DIR__ . &#39;/中英文目录Test1&#39;;
$dir = convertEncoding($dir);
mkdir($dir); 
//目录名:中英文目录Test1
#示例2
$fileName = __DIR__ . &#39;/中英文档名Test2.txt&#39;;
$fileName = convertEncoding($fileName);
file_put_contents($fileName, &#39;文件内容Test2&#39;);
//文件名:中英文档名Test2.txt
//文件内容:文件内容Test2
#示例3
$fileName = __DIR__ . &#39;/中英文档名Test3.txt&#39;;
$fileName = convertEncoding($fileName);
$fp = fopen($fileName, &#39;w&#39;);
fwrite($fp, &#39;文件内容Test3&#39;);
fclose($fp);
//文件名:中英文档名Test3.txt
//文件内容:文件内容Test3
/**
 * 转换字符编码
 * @param $string
 * @return string
 */
function convertEncoding($string){
    //根据系统进行配置
    $encode = stristr(PHP_OS, &#39;WIN&#39;) ? &#39;GBK&#39; : &#39;UTF-8&#39;;
    $string = iconv(&#39;UTF-8&#39;, $encode, $string);
    //$string = mb_convert_encoding($string, $encode, &#39;UTF-8&#39;);
    return $string;
}

Apprentissage recommandé : "Tutoriel vidéo PHP"

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