问题描述:
我用PHP+MYSQL进行开发,
之前一直问题,今天写到一个PHP的JS+Ajax更新字段时出现问题。
[Err] 1366 - Incorrect string value: '\xD6\xD0\xB9\xFA' for column 'GeXing' at row 1从网上查了一大堆,结果没一个可用的,
网上都说的是插入的时候编码问题,但现在我的问题是直接输出SQL语句,复制到Navicate里执行时却没有问题,
但在PHP程序里执行时却报上面的错,
我也曾试着用存储过程,但在执行存储过程时仍报错,不清楚怎么搞的。
我用PHP+MYSQL进行开发,
之前一直问题,今天写到一个PHP的JS+Ajax更新字段时出现问题。
[Err] 1366 - Incorrect string value: '\xD6\xD0\xB9\xFA' for column 'GeXing' at row 1从网上查了一大堆,结果没一个可用的,
网上都说的是插入的时候编码问题,但现在我的问题是直接输出SQL语句,复制到Navicate里执行时却没有问题,
但在PHP程序里执行时却报上面的错,
我也曾试着用存储过程,但在执行存储过程时仍报错,不清楚怎么搞的。
解决方案 »
- 软件运行一段时间后,增加了一些功能,因此当前的数据库与旧数据库相比增加了一些表和字段,旧数据库中的表和字段在当前数据库中都有,请问怎样将客户旧数据库中已经录入的
- 大家帮帮忙,自定义函数报不能递归的错误,怎么解决?
- 在PostgreSQL中如何用SQL语句得到当前连接的进程ID?
- mysql求和和update的问题
- 为什么无法启动mysql。急……
- postgresql中如何写判断一个数据库或表是否存的SQL语句?
- 时间函数?
- 咨询一下php连mysql问题(#2002错误)
- 请问InnoDB Read指的是什么?
- 请教mysql innodb表的自增主键重置问题
- MySQL中使用Navicat删除外键再添加外键的时候总是报错?
- 急mysql定时任务怎么不执行
MySQL 中文显示乱码
CREATE TABLE `t_msghis` (
`Serial` varchar(255) NOT NULL,
`Type` int(11) DEFAULT NULL,
`Title` varchar(255) DEFAULT NULL,
`Context` varchar(255) DEFAULT NULL,
`OperTime` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;插入一条数据:
insert into t_msghis values('中文码1’, 1, '中文码2‘, '中文码3', '中文码4’) 操作端每次进行操作时, 执行一下 set names gb2312; 命令就行了。
下面是C#的代码,其实原理应该是一致的。取得表数据:
MySQLConnection conn;
conn = new MySQLConnection(connectionstring);
conn.Open(); MySQLCommand commn = new MySQLCommand("set names gb2312", conn);
commn.ExecuteNonQuery(); string sql = "select * from t_msghis";
MySQLDataAdapter mda = new MySQLDataAdapter(sql, conn); mda.Fill(table);
conn.Close();
return table;
更改表数据:
public int ExecuteCmd(string str)
{
MySQLConnection conn;
conn = new MySQLConnection(connectionstring);
conn.Open(); MySQLCommand commn = new MySQLCommand("set names gb2312", conn);
commn.ExecuteNonQuery(); commn = new MySQLCommand(string.Format("update t_msghis set context='{0}'", str), conn); int icmd = commn.ExecuteNonQuery();
return icmd;
}
然后在网页中使用相同的编码,这样就不会出现乱码,这样较iconv简单,但需要对服务器进行配置。