java.lang.String因为是unicode编码2个字节,数据库的char为一个字节,提交截取怎么办?

Thinkinger 2005-04-05 10:14:51
JAVA里的char类型占2个字节,String类对象的length方法是以2个字节为单位计算的,但数据库的char类型是1个字节,所以会出现数据库截断的问题,请问大家怎么解决?
...全文
337 点赞 收藏 12
写回复
12 条回复
topil 2005年04月06日
我把一个字符串"12345"保存到DB中一个char[5]的字段里面没有问题啊?应该是在向DB中保存之前,要先检查其格式是否合法。
回复 点赞
topil 2005年04月06日
关于输入中文的问题,是可以通过getByte来判断,如果输入了中文,那么string.getByte()返回的数组的长度与string.length()是不相等的,通过这点可以来判断
回复 点赞
无欲则钢 2005年04月06日
一个字节的数据库能存中文吗?数据库是可以设置的,你设置一下就可以了,不用重新改数据定义。
回复 点赞
hongyan2004 2005年04月06日
getBytes可以
回复 点赞
kingfish 2005年04月05日
??跟java有什么关系?

检查你的程序吧
回复 点赞
Thinkinger 2005年04月05日
倒!不会吧,JAVA这方面太欠缺了吧,为了有足够的空间,我得把数据库列长调整为原来的2倍?!仅仅是为了unicode编码?
回复 点赞
kingfish 2005年04月05日
你自己决定怎么办吧

要不就是输入前判断,超长重输
要不就是写库时只写10字节
回复 点赞
Thinkinger 2005年04月05日
JDBC不会自己处理这种情况吗?比如,它自动把转码为一个字符!
回复 点赞
Thinkinger 2005年04月05日
长度是比较好判断的,问题是,我的textfield里有个10个字符输入,当我把它给一个String类型时,占用10*2=20个字符空间,当我提交到数据库的char(10)时,就会出现字符串被截取的情况,这怎么办?
回复 点赞
kingfish 2005年04月05日
String的getBytes()返回的数组的长度就是以字节为单位的.

至于截断, 只要超长就会
回复 点赞
Thinkinger 2005年04月05日
楼上的请详细点行不?
回复 点赞
kingfish 2005年04月05日
getBytes()
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告