将UTF-8转换为ANSI(windows-1252)

Pat*_*ick 3 php encoding utf-8 iconv windows-1252

我正在尝试将希伯来语中的字符串保存到文件中,同时使用ANSI编码的文件.所有的尝试都失败了我害怕.

  1. PHP文件本身是UTF-8.

所以这是我正在尝试的代码:

$to_file = "????? ?? ????";  
$to_file = mb_convert_encoding($to_file, "WINDOWS-1255", "UTF-8");  
file_put_contents(dirname(__FILE__) ."/txt/TESTING.txt",$to_file);      
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它返回false.

另一种尝试是:

$to_file = iconv("UTF-8", "windows-1252", $to_file);
Run Code Online (Sandbox Code Playgroud)

这将返回一个空字符串.虽然这不起作用,将outpout charset更改为windows-1255 DID工作.所以函数本身可以工作,但由于某种原因它不会转换为1252.

我在之前和之后运行此功能iconv并打印结果

mb_detect_encoding ($to_file);

iconv编码之前是UTF-8.
后的iconv编码是ASCII(??)

我真的很感激你能给予的任何帮助

dec*_*eze 5

Windows-1252拉丁语编码; 你不能编码Windows-1252中的希伯来字符.这就是为什么它不起作用.
Windows-1255是希伯来语的编码,这就是它的工作原理.

它无法使用的原因mb_convert_encodingmb_不支持Windows-1255.

根据定义,检测编码是不可能的.Windows-1255是单字节编码; 几乎不可能区分任何一个字节编码与另一个字节编码.结果与ASCII中的有效一样,与Windows-1255或Windows-1252或ISO-8859或任何其他单字节编码一样有效.

了解更多信息,请参阅每个程序员绝对正确需要了解的编码和字符集以处理文本.

  • @Patrick - 嗯,这样做的唯一方法是用拉丁字符抄写希伯来文,就像你可以写阿拉伯语作为"As-salamu alaykum";-) (2认同)