Rumah >pembangunan bahagian belakang >masalah PHP >Apakah yang perlu saya lakukan jika nama fail php baharu rosak?

Apakah yang perlu saya lakukan jika nama fail php baharu rosak?

藏色散人
藏色散人asal
2022-11-04 10:52:211667semak imbas

Penyelesaian kepada nama fail PHP baharu yang bercelaru: 1. Gunakan fungsi "iconv" atau "mb_convert_encoding" untuk menukar pengekodan aksara 2. Gunakan "function convertEncoding($string){...} " kaedah untuk melaksanakan Hanya tetapkan tetapan sistem untuk menukar pengekodan.

Apakah yang perlu saya lakukan jika nama fail php baharu rosak?

Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 8.1, komputer Dell G3.

Apakah yang perlu saya lakukan jika nama fail baharu dalam php rosak?

Di bawah tetingkap, apabila PHP memanggil fungsi mkdir(), file_put_contents(), dan fopen() untuk mencipta direktori atau nama dokumen dengan aksara Cina, aksara bercelaru muncul.

Punca

Selepas menyemak maklumat, ia berkaitan dengan set aksara sistem.

  • windows (Cina Ringkas), set aksara lalai ialah: gbk

  • windows (Cina Tradisional), set aksara lalai ialah: big5

  • linux, set aksara lalai ialah: utf-8

Penyelesaian

Gunakan iconv atau fungsi mb_convert_encoding Tukar pengekodan aksara.

//将字符串 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() ] )

Tukar pengekodan mengikut tetapan sistem Kaedahnya adalah seperti berikut:

<?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;
}

Contoh kod bercelaru

<?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
?>

Contoh penyelesaian

<?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;
}
Pembelajaran yang disyorkan: "

Tutorial Video PHP"

Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika nama fail php baharu rosak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn