Javascript PHP:如何使用unicode字符将文件写入磁盘

Javascript PHP:如何使用unicode字符将文件写入磁盘,javascript,php,unicode,filenames,Javascript,Php,Unicode,Filenames,我需要用特殊的ISO-8859-15字符将文件写入磁盘。出于我自己的测试目的,我使用了: -)jpg …但是当文件以该名称写入磁盘时,em破折号、en破折号以及1/2、1/4和3/4分数被替换为垃圾,而文件名中的其他字符被正确写入。为什么是一些而不是其他 下面是一个非常简单的PHP脚本,用于编写一个文件,文件名中只包含版权符号和em破折号。运行时,字符串被正确写入文件,但文件名的em破折号被替换为垃圾: <?php // First, create a text file with

我需要用特殊的ISO-8859-15字符将文件写入磁盘。出于我自己的测试目的,我使用了:

-)jpg

…但是当文件以该名称写入磁盘时,em破折号、en破折号以及1/2、1/4和3/4分数被替换为垃圾,而文件名中的其他字符被正确写入。为什么是一些而不是其他

下面是一个非常简单的PHP脚本,用于编写一个文件,文件名中只包含版权符号和em破折号。运行时,字符串被正确写入文件,但文件名的em破折号被替换为垃圾:

<?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字符集

非常感谢!
汤姆我找到了自己的答案。首先,事实证明,我需要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支持的编码列表。有几个与WINDOWS-1252在同一条线上;这是否意味着它们可以互换

非常感谢,,
Tom

确保用于保存PHP文件的文本编辑器将保存在目标字符集中,否则,只要保存PHP代码,这些内容就会立即变成ascii垃圾。
–¼½¾
字符在ISO-8859-15编码中不存在。它们采用类似的Windows代码页1252编码,分数采用类似的ISO-8859-1编码。ISO-8859-15很少使用。代码页1252是西欧语言环境中的“ANSI代码页”(默认用于使用MS C运行时访问文件的PHP等应用程序)。在其他地区,您可能会得到不同的结果。在非Windows服务器上,文件命名方案基于字节,因此没有固有的编码,但现代Linux服务器通常更喜欢UTF-8。因此,不幸的是,跨平台没有好的答案。因为这非常不可靠,所以通常最好避免在文件名中放入非ASCII。