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

标签 php mysql utf-8

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

最佳答案

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 端转换。

关于php读取mysql位域返回奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2914740/

相关文章:

按列唯一的 PHP 数组

php - PDO 不绑定(bind)变量

mysql - 在 Doctrine 模式中,当我添加新字段时无法更新

perl - Test::BDD::Cucumber::Harness::Html 中断 UTF-8 字符

c++ - 为什么在 winapi 中转换 UTF16 -> UTF8 -> UTF16 后文件名有不同的字节?

php - 使用 php 变量作为 sql 字段 laravel Eloquent ORM

php - 为什么mysql_query需要一个变量来执行?

mysql - SQL 到 HQL 查询 Grails

mysql - 从获取请求中填写选择菜单

java - 如何使用FileInputStream和BufferReader实现RandomAccessFile的seek()和getFilePointer()?