我试图将希伯来语中的字符串保存到文件中,同时使用ANSI编码的文件。 所有尝试都失败了,我很害怕。
所以这是我尝试的代码:
$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(??)
我非常感谢你能给予的任何帮助
答案 0 :(得分:5)
Windows-1252是拉丁文编码;你不能编码Windows-1252中的希伯来字符。这就是为什么它不起作用。
Windows-1255是希伯来语的编码,这就是它起作用的原因。
它与mb_convert_encoding
不起作用的原因是mb_ doesn't support Windows-1255。
检测编码是不可能的。 Windows-1255是单字节编码;几乎不可能区分任何一个字节编码与另一个字节编码。结果与ASCII中的有效一样,与Windows-1255或Windows-1252或ISO-8859或任何其他单字节编码一样有效。
答案 1 :(得分:0)
您可以使用:
<?php
$heb = 'טקסט בעברית .. # ';
$utf = preg_replace("/([\xE0-\xFA])/e","chr(215).chr(ord(\${1})-80)",$heb);
echo '<pre>';
print_r($heb);
echo '<pre>';
echo '------';
echo '<pre>';
print_r($utf);
echo '<pre>';
?>
输出将如下:
טקסטבעברית..#&lt; - $ utf - 转换的ANSI Windows 1255到现在的UTF ...:)