比如:
数据库一次段:UserName ,varchar 20
那么,我在页面的TextBox会提示:(最多输入20个字符,一个汉字占两个字符)
当然在入库的时候,我会判断TextBox输入的字符串长度,结果发现:
一个汉字只占一个长度,用户输入了20个汉字,其长度就是20
这样就与我的数据库不统一了。如何解决这个矛盾呢?

解决方案 »

  1.   

    1个汉字=2个字节(varchar)
    TextBox是精确到字符的1个汉字是一个字符,一个数字也是一个字符,一个字母也是一个字符
    不好判断
    如果你能改数据结构
    最好用nvarchar类型的字段
      

  2.   

    int len = System.Text.Encoding.Default.GetByteCount(this.textBox1.Text);
    System.Console.WriteLine(len);
      

  3.   

    .NET 的TextBox 支持 UniCode 如果你要对应到数据库中,请使用 Nvarchar or Nchar ,因为这是数据库里支持Unicode的字段类型
      

  4.   

    你必须在提交入库前,判断所取得的数据的字节长度再入库.
    判断的方法有两种,一种是脚本,一种是服务端验证.
    脚本判断:
    //功能:取得字符串的实际长度,汉字取2,半角字母取1,累加而成
    //str 要求取的实际长度
    function GetLen(str)
    {
    var len = 0;
    for(i=0; i<str.length; i++)
    {
    if(str.charCodeAt(i)>255)
    len += 2 ;
    else
    len++ ;
    }
    return len;
    }服务端判断:
    字节长度 = System.Text.Encoding.Default.GetByteCount(myValue)