我需要在数据库中存储特殊字符。
我这样做:
htmlentities($text,ENT_QUOTES,'UTF-8')
由于原因我不理解char●没有被编码,它仍然是“正常”(●)形式而不是其编码(●
)形式,看起来这个角色是utf-8 charset,但我需要在db中编码(●
)。我不能使用另一个字符集,因为我需要UTF-8。
为什么会这样?
由于
编辑:这不是关于编码或不编码数据库中的字符的讨论,我想知道为什么特定字符被完全忽略。答案 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,就很难将其恢复为纯文本(或者如果规格发生变化则重新编码)。我建议按原样存储。