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

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

> 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);      

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

另一种尝试是:

$to_file = iconv("UTF-8", "windows-1252", $to_file);

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

我在iconv之前和之后运行了这个函数并打印了结果

mb_detect_encoding($to_file);

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

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

解决方法:

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

它不适用于mb_convert_encoding的原因是mb_ doesn’t support Windows-1255.

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

有关更多信息,请参见What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text.

上一篇:php – 将Unicode字符转换为等效的ASCII字符


下一篇:Shell 指令