data too long for column 'Auser' at row 1
2007-10-26 17:33
761 查看
mantis bug管理系统的二次asp.net 接口开发的时候,碰到编码的问题,如上述标题。
此系统的功能比较好,开源的php+myql.
mysql 的 默认设置
file:my.ini
[mysql]
default-character-set=latin1
[mysqld]
default-character-set=latin1
mysql 数据库的编码细节查询都是latin1编码。
![](http://p.blog.csdn.net/images/p_blog_csdn_net/bayaci/ddd.JPG)
Mantis 系统的Mysql数据库链接
数据库编码方式:latin1
当前项目文档的编码方式: utf8
对中文字符串的更新操作和查询操作需要编码格式转换
转换方式:Formarter.GetEncodeToLatin|Formarter.GetEncodeFromLatin
更新sql语句之前使用set names latin1;
例如:
插入数据
sql = "set names latin1;insert into tableName( col1 ) values( '?col1')"
MySqlCommand comm = new MySqlCommand(sql, conn);
MySqlParameter pcol1 = new MySqlParameter("?col1", MySqlDbType.VarChar);
//编码转换
pcol1.Value = Formarter.GetEncodeToLatin(col1);
comm.Parameters.Add(pcol1);
//查询数据
sql = "set names latin1;select realName from mantis_user_table where id=" + reporterUserId;
comm = new MySqlCommand(sql, conn);
dr = comm.ExecuteReader();
if (dr.Read())
{
reporterRealName = dr["realName"].ToString();
//编码转换
reporterRealName = Formarter.GetEncodeFromLatin(reporterRealName);
}
dr.Close();
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
public static string GetEncodeToLatin(string src)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/1327ab569c1ae82736693a50b8e33378.gif)
...{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/6a9c071a08f1dae2d3e1c512000eef41.gif)
return System.Text.Encoding.GetEncoding("latin1").GetString(System.Text.Encoding.Default.GetBytes(src));
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/0196c3df5ea9e936f21e9932cca91014.gif)
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
public static string GetEncodeFromLatin(string src)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/1327ab569c1ae82736693a50b8e33378.gif)
...{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/6a9c071a08f1dae2d3e1c512000eef41.gif)
return System.Text.Encoding.Default.GetString(System.Text.Encoding.GetEncoding("latin1").GetBytes(src));
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/0196c3df5ea9e936f21e9932cca91014.gif)
}
页面的编码也要统一,尽可能使用System.Text.Encoding.Default获取默认的编码方式,而不是utf8方式
在数据库中编码改变时,sql语句的set names latin1也要相应的变化才能正常录入中文
此系统的功能比较好,开源的php+myql.
mysql 的 默认设置
file:my.ini
[mysql]
default-character-set=latin1
[mysqld]
default-character-set=latin1
mysql 数据库的编码细节查询都是latin1编码。
Mantis 系统的Mysql数据库链接
数据库编码方式:latin1
当前项目文档的编码方式: utf8
对中文字符串的更新操作和查询操作需要编码格式转换
转换方式:Formarter.GetEncodeToLatin|Formarter.GetEncodeFromLatin
更新sql语句之前使用set names latin1;
例如:
插入数据
sql = "set names latin1;insert into tableName( col1 ) values( '?col1')"
MySqlCommand comm = new MySqlCommand(sql, conn);
MySqlParameter pcol1 = new MySqlParameter("?col1", MySqlDbType.VarChar);
//编码转换
pcol1.Value = Formarter.GetEncodeToLatin(col1);
comm.Parameters.Add(pcol1);
//查询数据
sql = "set names latin1;select realName from mantis_user_table where id=" + reporterUserId;
comm = new MySqlCommand(sql, conn);
dr = comm.ExecuteReader();
if (dr.Read())
{
reporterRealName = dr["realName"].ToString();
//编码转换
reporterRealName = Formarter.GetEncodeFromLatin(reporterRealName);
}
dr.Close();
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
public static string GetEncodeToLatin(string src)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/1327ab569c1ae82736693a50b8e33378.gif)
...{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/6a9c071a08f1dae2d3e1c512000eef41.gif)
return System.Text.Encoding.GetEncoding("latin1").GetString(System.Text.Encoding.Default.GetBytes(src));
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/0196c3df5ea9e936f21e9932cca91014.gif)
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
public static string GetEncodeFromLatin(string src)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/1327ab569c1ae82736693a50b8e33378.gif)
...{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/6a9c071a08f1dae2d3e1c512000eef41.gif)
return System.Text.Encoding.Default.GetString(System.Text.Encoding.GetEncoding("latin1").GetBytes(src));
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201109/0196c3df5ea9e936f21e9932cca91014.gif)
}
页面的编码也要统一,尽可能使用System.Text.Encoding.Default获取默认的编码方式,而不是utf8方式
在数据库中编码改变时,sql语句的set names latin1也要相应的变化才能正常录入中文
相关文章推荐
- 错误:SQL Error: 1406, SQLState: 22001____Data truncation: Data too long for column 'add_user' at row 1
- MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题以及error 1406:data too long for column 'name' at row 1
- 成功解决data too long for column 'name' at row 1
- 读取MYSQL中文数据乱码,解决data too long for column 'title' at row 1
- SQL Error : 1406 Data too long for column 'session_id' at row 1
- Data truncation: Data too long for column 'big_bit' at row 1
- Data truncation: Data too long for column 'name' at row 1
- Data too long for column 'corp_id' at row 1
- MySQL插入中文时出现ERROR 1406 (22001): Data too long for column 'name' at row 1
- Data truncation: Data too long for column 'id' at row 1
- MYSQL写入中文错误 —— Data too long for column 'xxx' at row 1
- java-mysql异常<Data truncation: Data too long for column 'name ' at row 1>讨论
- 在程序中写了一段代码向数据库中插入数据,出现了data too long for column 'name' at row 1的问题。
- Data too long for column 'sex' at row 1
- Data truncation: Data too long for column 'name' at row 1的处理
- SSH - Data truncation: Data too long for column 'name' at row 1
- 【Hibernate错误解决办法】Could not execute JDBC batch update; Data too long for column 'name' at row 1
- com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'title' at row 1
- com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'title' at row 1
- java.sql.BatchUpdateException: Data truncation: Data too long for column 'site_name' at row 1