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

$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是希伯来语的编码,这就是它的工作原理.

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

标签:iconv,php,encoding,utf-8,windows-1252

来源: https://codeday.me/bug/20190830/1769470.html

我正在尝试将希伯来语中的字符串保存到文件中,同时使用ANSI编码的文件.所有的尝试都失败了我害怕.> PHP文件本身是UTF-8.所以这是我正在尝试的代码:$to_file = "בדיקה אם נרשם";$to_file = mb_convert_encoding($to_file, "WINDOWS-1255", "UTF-8");file_put_contents(dirname(...