PHP iconv从utf-8到Windows-1252,无特殊字符

时间:2018-09-26 23:07:14

标签: php iconv windows-1252

我正在尝试像这样对文件内容进行编码:

$f_file = fopen("dreams.txt", "w");  
$string = "Los sueños se cumplen.";    
$string_encoded = iconv( mb_detect_encoding( $string ), 'Windows-1252//TRANSLIT', $string );
fwrite($f_file, $string_encoded);
fclose($f_file);

如果 $ string 包含特殊字符(例如“ñ”或“á”),则文件将保存为Windows-1252编码,但是如果 $ string 不包括它们,文件编码为UTF-8。我需要Windows-1252编码的文件。

我在做什么错了?

1 个答案:

答案 0 :(得分:2)

在ASCII,ANSI(ISO-8859-1),Windows-1252和UTF8中使用的前127个字符都是相同的,因此仅通过仅查看文档就无法分辨出“ the”编码是什么该集合中的字符:它们都同样适用。

现代编辑器将看到这种情况,并指出“现在是2018年,所以我要告诉你它是UTF8”,他们甚至不会错:在添加这些特殊字符之前,所有这些编码方案都是可以互换的。直到您引入更高的字节码字符,您才必须明确说明编码的含义。