【问题标题】:PHP iconv from utf-8 to windows-1252 with no special charactersPHP iconv 从 utf-8 到 windows-1252,没有特殊字符
【发布时间】:2018-09-26 23:07:14
【问题描述】:

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

$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 编码的文件。

我做错了什么?

【问题讨论】:

  • 一个真正重要的问题:是什么让您声称它“编码为 UTF-8”?你用什么来检查?
  • 我正在使用 Sublime Text 和 NotePad++ 打开文件。编码显示在那里。
  • 感谢您提供的信息,@Mike'Pomax'Kamermans!
  • 让我把它变成一个答案,因为基本上就是这样。
  • “编码显示在那里”:为了清楚起见,显示的编码是它可能的几十种编码之一。实际编码是您在写入文件时选择的编码。

标签: php iconv windows-1252


【解决方案1】:

ASCII、ANSI (ISO-8859-1)、Windows-1252 和 UTF8 中使用的前 127 个字符都是相同的,因此仅通过查看仅包含该集合中的字符:它们都同样适用。

现代编辑器会看到这一点,然后说“现在是 2018 年,所以我要告诉你它是 UTF8”,他们甚至不会错:除非你添加了那些特殊字符,否则所有这些编码方案都是可以互换的。直到您引入更高的字节码字符,您才必须再次明确编码应该是什么。

【讨论】:

  • 感谢您提供的信息!
  • 但请记住对有用的答案进行投票,并接受可以解决您问题的答案。这就是让 stackoverflow 为寻求帮助的人提供答案的原因。
猜你喜欢
  • 1970-01-01
  • 2013-09-10
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 2014-05-06
  • 2016-05-24
  • 2011-04-07
  • 2015-01-15
相关资源
最近更新 更多