我需要用特殊的ISO-8859-15字符写出一个文件到磁盘。出于我自己的测试目的,我使用了:
- ©®±àáâãäåæÒÓÔÕÖ¼½¾§μçðþú-.JPG
...但是当使用此名称将文件写入磁盘时,em-dash,en-dash以及1 / 2,1 / 4和3/4分数被替换为垃圾,而其他字符在文件名中写得正确。为什么有些人而不是其他人???
这是一个非常简单的PHP脚本,用于在其名称中写出仅带有版权符号和em-dashes的文件。当我运行它时,字符串被正确写入文件,但文件名的em-dashes被替换为garbage:
<?php
// First, create a text file with the em-dash and the copyright symbol, then put the file prefix into the file:
$filename1 = "000—©—©.txt";
$content1 = "000—©—©";
file_put_contents($filename1, $content1);
?>
使用PHP(或Javascript)执行此操作的最有效和最优雅的方法是什么?我只针对ISO-8859-15字符集。
非常感谢! 汤姆
答案 0 :(得分:3)
我找到了自己的答案。首先,我需要WINDOWS-1252编码。其次,我需要做的就是使用inconv(),从'UTF-8'转换为'WINDOWS-1252',如下所示:
<?php
// First, create a text file with the em-dash and the copyright symbol, then put the file prefix into the file:
$filename1 = "000—©—©.txt";
$content1 = "000—©—©";
// Judicious use of iconv() does the trick:
$filename1 = iconv('UTF-8', 'WINDOWS-1252', $filename1);
file_put_contents($filename1, $content1);
?>
我唯一挥之不去的问题,只要我在我的本地Windows机器上的XAMPP上测试这个问题,WINDOWS-1252编码是否可以在主要托管服务(GoDaddy等)的实际服务器上运行。如果没有,是否有一种不同的编码,支持WINDOWS-1252中包含的所有内容,但更适合非XAMPP本地主机服务器?
iconv here支持完整的编码列表。有几个与WINDOWS-1252在同一条线上;这是否意味着它们可以互换?
非常感谢, 汤姆