$filename = '保護利用計画要綱してくださいテキストまたはページ.txt');//文件名乱码,中文乱码已经解决但是日文无法解决$fp = fopen($path.$filename, "wb");
fwrite($fp, 'fsdfassadf留言发表成功sfasdfd'."\n");
fclose($fp);
echo "留言发表成功!";
请高手最好能够提供经过测试的正确代码。谢谢。
解决方案 »
- php变量赋值的问题
- 数组如何去掉空白的值
- 5.3.3 php_memcache.dll上哪去找
- 请问用PHP,要不要专用的语言编译工具?不太懂,但急着要用!请各位指点。
- 高手帮忙解释一下,关于以数组作为函数session_set_save_handler()的参数
- 中国移动飞信php类 求用法
- 好奇怪的问题,Cookie设置失败,高人来看看
- FCKeditor 在Smarty中怎么用 100分
- 请问PHP中有没有类似ASP中WebEdit这样的所见即所得的编辑工具?(在线等)
- 小弟初学PHP,按照书上的例子写了一段文件上传的代码,但是怎么什么反应都没有啊,在线求解~~
- 请问PHP一个简单的问题!
- IE6下,回车不能提交表单
在日文操作系统下的文件名和中文操作系统下的日文文件名用的编码是不一样的。
日文下的好像一个是EUC-JP,
fwrite($fp, 'fsdfassadf留言发表成功sfasdfd'."\n");
fclose($fp);
echo "留言发表成功!";
而linux等几乎都是utf-8举例几种常见情况
情况1,你的程序是utf-8编码,那存放在windows上必然乱码
情况2,你的程序是gb,这时win上正常了,传到linux服务器上乱码了
情况3,程序utf-8,服务器也正常,但是你的ftp软件或者ssh软件没有设置成使用utf-8,同样会乱码
高级点的ftp和ssh软件都有设置的地方,使用utf-8即可
如果是网页,那你网页应该设置使用utf-8显示
比如用html的<meta>或者header()
setlocale(LC_ALL, 'en_US.UTF-8');
然后转成Shift-JIS
$filename = '保護利用計画要綱してくださいテキストまたはページ.txt'; $filename = iconv('UTF-8', 'Shift-JIS', $filename);$fp = fopen($path.$filename, "wb");
fwrite($fp, 'fsdfassadf留言发表成功sfasdfd'."\n");
fclose($fp);
echo "留言发表成功!";
你通过什么方式看到文件名乱码
ftp/ssh/http
在windows下显示正常?在linux下显示正常?比如你现在中文windows,你要把它转换成gb,但是要注意日文里面可能会有字符不在gb中
你如果用日文windows,那你就要转成jis
如果用英文windows,默认安装系统的情况下,你永远不可能得到“正常”,你还要装什么东亚语言包等等等等
所以
日文(Shift-JIS)的 保護利用計画要綱してくださいテキストまたはページ.txt
会变成 曐岇棙梡寁夋梫峧偟偰偔偩偝偄僥僉僗僩傑偨偼儁乕僕.txt 所以你需要转成操作系统能够识别的代码
echo iconv('Shift-JIS', 'gbk', '曐岇棙梡寁夋梫峧偟偰偔偩偝偄僥僉僗僩傑偨偼儁乕僕.txt');out: 保護利用計画要綱してくださいテキストまたはページ.txt
//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 "留言发表成功!";都可以正常看到文件名,非乱码。
日文(Shift-JIS)的 保護利用計画要綱してくださいテキストまたはページ.txt
才会变成 曐岇棙梡寁夋梫峧偟偰偔偩偝偄僥僉僗僩傑偨偼儁乕僕.txt被#10忽悠成utf-8了
我想,这就是为什么现在discuz等程序会提供gbk、big5、utf8简体、utf8繁体等不同程序的原因吧。
但是还有一个问题,
iconv("UTF-8","GBK",' 保護利用計画要綱してくださいテキストまたはページ.txt');//日文 “保護利用” 前面需要空一格 没乱码,如果不加空格 确输出 “o利用計画要綱してくださいテキストまたはページ.txt ”结贴。