【发布时间】:2010-05-26 16:10:20
【问题描述】:
我正在使用mysql_fetch_assoc($query),其中一个位字段返回为 ,这应该是正确的。
问题是我还需要将它输出到 xml,它是一个非法的 xml 字符。
db 表的字符集是 utf-8。为什么会这样?
【问题讨论】:
我正在使用mysql_fetch_assoc($query),其中一个位字段返回为 ,这应该是正确的。
问题是我还需要将它输出到 xml,它是一个非法的 xml 字符。
db 表的字符集是 utf-8。为什么会这样?
【问题讨论】:
您也可以使用:ord($bitvalue)。
【讨论】:
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 端转换。
【讨论】:
SELECT bitfield+0 强制转换为int。这样做或使用CAST() 有什么区别吗?
$bitvalue = ($bitvalue === chr(0x01)),它将true或false分配给$bitvalue。
在 SELECT 中使用 BIN 函数。
http://dev.mysql.com/doc/refman/5.0/en/bit-field-literals.html
【讨论】: