编码●php中的特殊字符

时间:2011-07-29 14:07:54

标签: php utf-8 character-encoding

我需要在数据库中存储特殊字符。

我这样做:

htmlentities($text,ENT_QUOTES,'UTF-8')

由于原因我不理解char●没有被编码,它仍然是“正常”(●)形式而不是其编码(●)形式,看起来这个角色是utf-8 charset,但我需要在db中编码(●)。我不能使用另一个字符集,因为我需要UTF-8。

为什么会这样?

由于

编辑:这不是关于编码或不编码数据库中的字符的讨论,我想知道为什么特定字符被完全忽略。

2 个答案:

答案 0 :(得分:2)

您可以使用多字节函数将UTF-8字符串转换为US-ASCI,同时用字符引用替换任何非ASCII字符:

mb_substitute_character('entity');
$ascii = mb_convert_encoding($utf8, 'ASCII', 'UTF-8');

虽然我认为没有任何理由这样做。您的数据库不会将任何字符串解释为HTML。

答案 1 :(得分:0)

具有最广泛的HTML实体集的内置函数可能是mb_convert_encoding

<?php
// Assuming UTF-8 input:
echo mb_convert_encoding('●', 'HTML-ENTITIES', 'UTF-8');

在任何情况下,一旦您将纯文本存储为HTML,就很难将其恢复为纯文本(或者如果规格发生变化则重新编码)。我建议按原样存储。