我正在创建一个要保存在本地用户计算机上的文件(不在Web浏览器中呈现)。
我目前正在使用html_entity_decode
,但这不会转换像–
这样的字符(这是n-dash),并且想知道我应该使用的其他功能。
例如,当文件导入软件时,而不是ndash或只是 - 它显示为–
。我知道我可以使用str_replace
,但是如果它发生在这个角色上,那么由于数据是动态的,它可能会与许多其他角色一起发生。
答案 0 :(得分:32)
您需要定义目标字符集。 –
不是默认ISO-8859-1字符集中的有效字符,因此未解码。将UTF-8定义为输出字符集,它将解码:
echo html_entity_decode('–', ENT_NOQUOTES, 'UTF-8');
如果可能的话,你应该避免开始使用HTML实体。我不知道编码数据来自何处,但如果您将其存储在数据库或其他地方,那么您做错了。始终存储UTF-8编码的数据,仅转换为HTML实体,或者在必要时转义为输出。
答案 1 :(得分:17)
尝试mb_convert_encoding()
:
$string = "n–dash";
$output = mb_convert_encoding($string, 'UTF-8', 'HTML-ENTITIES');
echo $output;
答案 2 :(得分:1)
<强>更新强>
function decode_characters($data)
{
$text = $data;
$enc = mb_detect_encoding($text, "UTF-8,ISO-8859-1");
$resutl_characters = iconv($enc, "UTF-8", $text);
return $resutl_characters;
}
答案 3 :(得分:0)
使用utf8_encode()
将文件编码为UTF-8。然后你不必更换/删除任何东西。
答案 4 :(得分:0)
您是否尝试将字符转换为HTML实体以便存储和以后检索?
htmlentities('–', ENT_COMPAT, 'UTF-8');
// Returns "–"
如果我误解了你的问题,请告诉我。