使用JAVA将一个字符串插入ORACLE数据库,中间字符串的字节数会不会发生变化?
2个回答
展开全部
不知道你是否问的是字符串存储空间的问题,字节数大小取决于存储所用的字符编码。
如果是utf-8则一个中文字符对应3个字节,ascii字符则1个字节...
如果是utf-8则一个中文字符对应3个字节,ascii字符则1个字节...
追问
int i = getBytekazu(temp, 40);
if(i>=0){
temp = temp.subString(0,i);
}else{
temp = "";
}
private static int getBytekazu(String str, int index){
String strStart = "";
for(int i = str.length();i>=0;i--){
strStart = str.subString(0,i);
if(strStart.getBytes().length <= index){
return i;
}
}
return -1;
}
其中temp插入数据库,check后还是有数据长度超过40抛SQLException temp值实际长为41
追答
你现在用的是程序去检查它的字节长度,strStart.getBytes()用的是当前环境中的字符编码file.encoding.. windows下运行一般就是GBK的,linux下是UTF-8,如果是Eclipse工具的话要看设置。要小心这个区别。
另外,为何直接让getBytekazu方法直接返回一个合法的字符串呢,现在只是返回一个下标,然后又再做一下切割,不是多此一举吗。
不断的调用str.subString,会产生较多的字符串对象,要小心性能问题;
不知道你数据库字段用的是什么类型,如果能评估出一个合理的字符数限制,那么不必用getBytes去检查字节数,检查字符串长度更简单。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询