MySQL乱码问题,急!

发泄网 2010-09-15 04:19:56
问题描述:
我用PHP+MYSQL进行开发,
之前一直问题,今天写到一个PHP的JS+Ajax更新字段时出现问题。
[Err] 1366 - Incorrect string value: '\xD6\xD0\xB9\xFA' for column 'GeXing' at row 1

从网上查了一大堆,结果没一个可用的,
网上都说的是插入的时候编码问题,但现在我的问题是直接输出SQL语句,复制到Navicate里执行时却没有问题,
但在PHP程序里执行时却报上面的错,
我也曾试着用存储过程,但在执行存储过程时仍报错,不清楚怎么搞的。
...全文
92 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
发泄网 2013-01-20
  • 打赏
  • 举报
回复
要解决中文乱码,my.ini里可以设置默认编码GBK或是其它, 然后在网页中使用相同的编码,这样就不会出现乱码,这样较iconv简单,但需要对服务器进行配置。
发泄网 2010-09-19
  • 打赏
  • 举报
回复
谢谢大家,自己解决了,使用iconv("utf-8","gb2312//ignore",$cont)就可以了.哈哈.
qqiuzaihui 2010-09-16
  • 打赏
  • 举报
回复
有一个简单的方法, 楼主可以试试。

建表时, 使用如下格式:
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;
}
ACMAIN_CHM 2010-09-15
  • 打赏
  • 举报
回复
参考上贴中的PHP中加上set name
ACMAIN_CHM 2010-09-15
  • 打赏
  • 举报
回复

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧