我正在尝试将希伯来语中的字符串保存到文件中,同时使用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或任何其他单字节编码一样有效.