当前位置: 首页 > 知识库问答 >
问题:

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

巫马望
2023-03-14

我试图保存一个字符串在希伯来文文件,同时有文件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);      

由于某种原因,返回false。

另一次尝试是:

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

这返回一个空字符串。当这不起作用时,将输出字符集更改为Windows-1255的工作。所以函数本身工作,但由于某种原因,它不转换为1252。

我运行这个函数之前和之后的图标和打印的结果

mb_detect_encoding($to_file);

在图标之前编码是UTF-8,在图标之后编码是ASCII(??)

我很感激你能给我任何帮助

共有2个答案

司徒浩思
2023-03-14

您可以使用以下选项:

<?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>';
?>

输出如下:

טקסט בעברית .. #

咸弘雅
2023-03-14

Windows-1252是拉丁编码;无法在Windows-1252中对希伯来语字符进行编码。这就是它不起作用的原因
Windows-1255是希伯来语的编码,这就是它工作的原因。

它不适用于mb_convert_encoding的原因是mb_不支持Windows-1255。

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

了解每一个程序员绝对、积极地需要了解的编码和字符集,以使用文本获取更多信息。

 类似资料:
  • 我有UTF-8源数据,我必须创建在Windows 1252字符编码编码的CSV文件。 我尝试了经典功能,但效果不佳。它必须支持转换后的塞尔维亚字符: "čćžšđ" 。 此外,我还尝试转换为CP1252、ISO-8859-1、ISO-8859-2,功能包括:mb_convert_编码、iconv和iconv_set_编码。 有人知道该试试什么吗?

  • 我需要转换UTF-8字符集到Windows 1252使用PHP和我没有太多的运气到目前为止。我的目标是将文本传输到第三方系统,并排除任何不在Windows 1252字符集中的字符。 我尝试了iconv和mb_convert_编码,但都得到了意想不到的结果。 两者的输出均为“K”?本哈文? 我没有料到会有这样的结果?”s,因为这些字符在WINDOWS-1252字符集中。 有人能帮我解释一下吗。

  • 我有一些用ANSI编码的php脚本文件。现在我已经将我的网站转换为html5,我需要UTF-8中的所有内容,以便这些文件中的重音可以正确显示,而无需通过iconv()进行任何php转换。我使用记事本++在UTF-8上设置脚本编码并保存文件,大多数都很好,重音显示正确,只有主脚本现在阻止了一切,服务器只返回一个白页,没有任何错误消息,即使使用! 当我在记事本++中将编码更改为ANSI并保存文件而不做

  • 我正在处理一个使用UTF-8编码了两次的遗留文件。例如,编码点()本应编码为,但改为编码为(是的UTF-8编码,是的UTF-8编码)。 假设数据在CP-1252中编码,则执行第二次编码。 为了回到UTF-8编码,我使用了以下(似乎错误)命令 我的问题是iconv似乎无法转换回一些字符。更准确地说,iconv无法转换UTF-8表示形式包含映射到CP-1252中控制字符的字符。一个例子是代码点ρ():

  • 在我的Silverlight应用程序中,我得到了一个用windows-1252编码的XML文件。现在我的问题,它不会正确显示,直到Windows-1252字符串转换为UTF8字符串。在一个正常的C#环境中,这不会是一个大问题:在那里我可以做这样的事情: (将字符串的字符编码从windows-1252转换为utf-8) 但是silverlight不支持windows-1252,它只支持unicode

  • 将编码传递到UTF-8后,我无法在Windows-1252中显示字符串。 我被迫在init中转换为UTF-8 我想将我的字符串转换为Windows-1252字符以显示它: 我正在得到这个结果 如何获得正确的以下结果? 谢谢! 当做