$filename = '保護利用計画要綱してくださいテキストまたはページ.txt');//文件名乱码,中文乱码已经解决但是日文无法解决$fp = fopen($path.$filename, "wb");
fwrite($fp, 'fsdfassadf留言发表成功sfasdfd'."\n");
 
fclose($fp);
echo "留言发表成功!";
 
 请高手最好能够提供经过测试的正确代码。谢谢。

解决方案 »

  1.   

    文件名的编码和你的操作系统有关系的。
    在日文操作系统下的文件名和中文操作系统下的日文文件名用的编码是不一样的。
    日文下的好像一个是EUC-JP,
      

  2.   

    如果是日文系统的话:$filename = '保護利用計画要綱してくださいテキストまたはページ.txt');//文件名乱码,中文乱码已经解决但是日文无法解决$filename = iconv('UTF-8', 'EUC-JP', $filename);$fp = fopen($path.$filename, "wb");
    fwrite($fp, 'fsdfassadf留言发表成功sfasdfd'."\n");
     
    fclose($fp);
    echo "留言发表成功!";
      

  3.   

    你的代码已经很正确了,现在你需要提供的是操作系统版本,文件编码,你通过什么方式看到文件名乱码等信息windows 中文版默认使用gb,日文版使用jis
    而linux等几乎都是utf-8举例几种常见情况
    情况1,你的程序是utf-8编码,那存放在windows上必然乱码
    情况2,你的程序是gb,这时win上正常了,传到linux服务器上乱码了
    情况3,程序utf-8,服务器也正常,但是你的ftp软件或者ssh软件没有设置成使用utf-8,同样会乱码
      

  4.   

    谢谢各位, Siramizu 我在win 和linux 测试都是一样的乱码。但是现在服务器是linux,语言系统不是日语的,怎么解决呢?语言系统是英语的,linux。 中文乱码,我在win 和linux 下  setlocale(LC_ALL, 'en_US.UTF-8'); 然后在转为gb2312。
      

  5.   

    首先要确定你的程序文件是什么编码,比如是utf-8,然后再确定你通过什么方式看到文件名乱码,ftp?还是你php输出到网页还是ssh呢?
    高级点的ftp和ssh软件都有设置的地方,使用utf-8即可
    如果是网页,那你网页应该设置使用utf-8显示
    比如用html的<meta>或者header()
      

  6.   

    日文也一样,
    setlocale(LC_ALL, 'en_US.UTF-8');
    然后转成Shift-JIS
      

  7.   

    谢谢二位,test.php 代码如下,文件名还是乱码。我的成为Php 文件为utf-8 编码  setlocale(LC_ALL, 'en_US.UTF-8');
    $filename = '保護利用計画要綱してくださいテキストまたはページ.txt'; $filename = iconv('UTF-8', 'Shift-JIS', $filename);$fp = fopen($path.$filename, "wb");
    fwrite($fp, 'fsdfassadf留言发表成功sfasdfd'."\n");
     
    fclose($fp);
    echo "留言发表成功!";
      

  8.   

    lz你要说清楚
    你通过什么方式看到文件名乱码
    ftp/ssh/http
      

  9.   

    我就是在本地测试,生成的  曐岇棙梡寁夋梫峧偟偰偔偩偝偄僥僉僗僩傑偨偼儁乕僕.txt 这样的文件。文件就保存在我的机器目录里。
      

  10.   

    印象中linux是utf-8的编码,这样不用那多么的win的代码页所以,如果不能显示,可能是没有字体
      

  11.   

    你本地是windows的吗?windows文件系统是gb码,你程序是utf-8,系统当gb,肯定是乱的你想达到什么效果呢?
      

  12.   

    你用iconv将文件名转为日文的编码如果你是英文的系统就转成iso-8859-1
      

  13.   

    怎么算“正常”
    在windows下显示正常?在linux下显示正常?比如你现在中文windows,你要把它转换成gb,但是要注意日文里面可能会有字符不在gb中
    你如果用日文windows,那你就要转成jis
    如果用英文windows,默认安装系统的情况下,你永远不可能得到“正常”,你还要装什么东亚语言包等等等等
      

  14.   

    你是中文操作系统
    所以
    日文(Shift-JIS)的 保護利用計画要綱してくださいテキストまたはページ.txt 
    会变成 曐岇棙梡寁夋梫峧偟偰偔偩偝偄僥僉僗僩傑偨偼儁乕僕.txt 所以你需要转成操作系统能够识别的代码
    echo iconv('Shift-JIS', 'gbk', '曐岇棙梡寁夋梫峧偟偰偔偩偝偄僥僉僗僩傑偨偼儁乕僕.txt');out: 保護利用計画要綱してくださいテキストまたはページ.txt
      

  15.   


    //windows
    function readdirfile($path){
    strpos($path,'..') !== false && exit('Forbidden');
    $returnfiles=array();
    if(is_dir($path)){
    $files=@opendir($path);
    while($file=@readdir($files)){
    if(is_file("$path/$file")){
    if($file!="." && $file!=".." && $file!="" && $file!="Thumbs.db"){
    $file=iconv("GBK","UTF-8",$file);
    $returnfiles[] = $file;
    }
    }
    }
    @closedir($files);
    }
    return $returnfiles;
    }
    print_r(readdirfile(dirname(__FILE__)));$filename = '保護利用計画要綱してくださいテキストまたはページ.txt';//文件名乱码,中文乱码已经解决但是日文无法解决
    $filename = iconv("UTF-8","GBK",$filename);
    $fp = fopen($path.$filename, "wb");
    fwrite($fp, 'fsdfassadf留言发表成功sfasdfd'."\n");
     
    fclose($fp);
    echo "留言发表成功!";
    //linux
    function readdirfile($path){
    strpos($path,'..') !== false && exit('Forbidden');
    $returnfiles=array();
    if(is_dir($path)){
    $files=@opendir($path);
    while($file=@readdir($files)){
    if(is_file("$path/$file")){
    if($file!="." && $file!=".." && $file!="" && $file!="Thumbs.db"){
    $returnfiles[] = $file;
    }
    }
    }
    @closedir($files);
    }
    return $returnfiles;
    }
    print_r(readdirfile(dirname(__FILE__)));$filename = '保護利用計画要綱してくださいテキストまたはページ.txt';//文件名乱码,中文乱码已经解决但是日文无法解决
    $fp = fopen($path.$filename, "wb");
    fwrite($fp, 'fsdfassadf留言发表成功sfasdfd'."\n");
     
    fclose($fp);
    echo "留言发表成功!";都可以正常看到文件名,非乱码。
      

  16.   

    确实是
    日文(Shift-JIS)的 保護利用計画要綱してくださいテキストまたはページ.txt 
    才会变成 曐岇棙梡寁夋梫峧偟偰偔偩偝偄僥僉僗僩傑偨偼儁乕僕.txt被#10忽悠成utf-8了
      

  17.   

    以前在自己电脑上的txt文件可以正常显示,但是复制到了台湾公司的繁体电脑上,就乱码了。
    我想,这就是为什么现在discuz等程序会提供gbk、big5、utf8简体、utf8繁体等不同程序的原因吧。
      

  18.   

    谢谢,dingsongtao 和各位。根据dingsongtao 测试成功,
    但是还有一个问题,
    iconv("UTF-8","GBK",' 保護利用計画要綱してくださいテキストまたはページ.txt');//日文 “保護利用” 前面需要空一格  没乱码,如果不加空格 确输出  “o利用計画要綱してくださいテキストまたはページ.txt ”结贴。