php读取mysql位字段返回奇怪的字符

时间:2010-05-26 16:10:20

标签: php mysql utf-8

我正在使用mysql_fetch_assoc($query),其中一个位字段返回,这应该是真的。
问题是我还需要将它输出到xml,它是一个非法的xml字符。 db表的charset是utf-8。为什么会这样?

3 个答案:

答案 0 :(得分:14)

MySQL实际上为位字段返回0x00和0x01。你必须将它们转换成适合PHP端的东西

$bitvalue = ($bitvalue == 0x01) ? 'TRUE' : 'FALSE'

或在查询中:

SELECT CAST(bitfield AS unsigned int)
FROM ...

将其转换为int并返回为'0'和'1'(0x48和0x49)。

除此之外,一些较旧的mysql库预先支持MySQL中的实际位字段(当它们被静默转换为char(1)时)并且会丢弃值,所以如果你遇到了一个在那些恐龙版本中,您可能必须使用查询版本而不是PHP端转换。

答案 1 :(得分:7)

您还可以使用:ord($bitvalue)

答案 2 :(得分:4)