我有一个文件,其中包含一些西里尔字符。当我在Notepad ++中打开这个文件时,我看到它有ANSI编码。如果我使用Notepad ++手动将其编码为UTF-8,那么一切都绝对正常 - 我可以在我的解析器中使用此文件并获得结果。但我想要的是使用PHP以编程方式进行。这是我在搜索SO和文档后尝试的内容:
file_put_contents($file, utf8_encode(file_get_contents($file)));
在这种情况下,当我的算法解析生成的文件时,它会遇到“è”,“í”,“â”等字母。换句话说,在这种情况下,我得到了一些垃圾。我也试过这个:
file_put_contents($file, iconv('WINDOWS-1252', 'UTF-8', file_get_contents($file)));
但它会产生同样的垃圾。所以,我真的很想知道如何以编程方式实现Notepad ++的功能。谢谢!
答案 0 :(得分:2)
Notepad ++可能会将您的编码报告为ANSI,但这并不一定等同于Windows-1252。 1252是拉丁字母的编码,而1251是为西里尔字母编码。所以使用
file_put_contents($file, iconv('WINDOWS-1251', 'UTF-8', file_get_contents($file)));
使用iconv。
将1251转换为utf-8