oracle数据库字符集为utf-8,字段的类型为nvarcha(2000),插入两千汉字就报错!

我想请教大家一个问题..我oracle设置的字符集为jutf-8.然后在一张表里的一个字段的类型是nvchar2(2000),然后呢在程序中输入2000个汉字就会报错(报错说插入的值超出字段设置的最大长度).所以我想在输入框中输入字的时候就获取他的长度,要可以获取到中文的还有别的国家的.比如说我输入"Iam 中国人" 就要算出他在utf-8编码下实际占用的空间.因为我看到书上说 一个中文汉字对应UTF0-8有时候是2个字节,有时候是3个字节.求解答..谢谢了!

lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节
length(string)计算string所占的字符长度:返回字符串的长度,单位是字符
对于单字节字符,LENGTHB和LENGTH是一样的,一般中文字是占两个字节的,所以nvarchar2(2000)不可能存的下2000个汉字。
在oracle的sql中可以用lengthb来得到字符串的字节数,如果是前台的话就要看具体的开发工具了。追问

我是用.NET 开发..还没有找到类似lengthb的方法获取字符串的字节数.谢谢你哈.

追答

byte[] bytes = System.Text.Encoding.Default.GetBytes(text);
int i = bytes.Length;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-27
utf8一个汉字认为四个字节,所以只能容纳1000个汉字追问

     你说错了.那是utf-32 是那样的..

相似回答