PHP函数将ø转换为&Aring ;?

Ste*_*ven 3 php

谁能告诉我PHP函数转换øÅ什么?

我存储特殊字符,如æ, ø, å, ö, ähtml编码字符.

我搜索谷歌和Stackoverflow,但无法弄清楚要搜索什么.
我以前管它,但不记得如何:(

以下不起作用:

$tmp = ('Øving, ære, blå');
$tmp2 = htmlspecialchars($tmp);
echo $tmp.' - '.$tmp2;
Run Code Online (Sandbox Code Playgroud)

输出是: Øving, ære, blå - Øving, ære, blå

我也尝试过htmlentities:

$tmp = ('Øving, ære, blå');
$tmp2 = htmlentities($tmp);
echo $tmp.' - '.$tmp2;
Run Code Online (Sandbox Code Playgroud)

这输出: Øving, ære, blå - Ã?ving, ære, blÃ¥

当我想要的时候
Øving, ære, blå - Øving, ære, blå

leo*_*loy 5

这取决于你的特殊字符编码的编码(在php中).假设您可以使用UTF-8

 $str2 =  htmlentities($str2,ENT_COMPAT,"UTF-8");
Run Code Online (Sandbox Code Playgroud)

但以下可能更强大(如果您支持mb_函数)

$str2 =  mb_convert_encoding ($str1,"HTML-ENTITIES","UTF-8");
Run Code Online (Sandbox Code Playgroud)

更新:我已经在指定的示例(字符u + 00C5)中验证了两者都有效.并且第二种确实在以下意义上更加健壮:当找不到给定unicode字符的命名实体时,第一种选择使其保持完整,第二种选择使用数字实体.如果我们想要避免HTML页面中的非ascii字符,那么第二个是首选.一些行要检查:

<?php 

 for($i=129;$i<3000;$i++)
    printUnicode($i);

  function printUnicode($value) {
      $one_character = pack("L", $value);
      $u8 = iconv("UTF-32", "UTF-8", $one_character);
      echo join("\t",array(
         $value,
         $u8,
         htmlentities($u8,ENT_COMPAT,"UTF-8"),
         mb_convert_encoding($u8,"HTML-ENTITIES","UTF-8")))
            . "\n";

  }
?>
Run Code Online (Sandbox Code Playgroud)

以及一些示例输出:

187     »       &raquo;         &raquo;
188     ¼       &frac14;        &frac14;
189     ½       &frac12;        &frac12;
190     ¾       &frac34;        &frac34;
191     ¿       &iquest;        &iquest;
192     À       &Agrave;        &Agrave;
193     Á       &Aacute;        &Aacute;
194     Â       &Acirc;         &Acirc;
195     Ã       &Atilde;        &Atilde;
196     Ä       &Auml;          &Auml;
197     Å       &Aring;         &Aring;
...
655     ?       ?              &#655;
656     ?       ?              &#656;
657     ?       ?              &#657;
658     ?       ?              &#658;
659     ?       ?              &#659;
Run Code Online (Sandbox Code Playgroud)