作者:Maverick
blog:
http://blog.csdn.net/zhaohuabing
转载请注明出处
在工作中遇到一个问题,有一个字段在oracle数据库中长度限制为2000,该字段可以从用户界面输入,因此需要进行限制输入框的输入字符数,保证符合oracle数据库中该字段的长度限制。经过测试发现,输入英文字符可以输入2000个,输入中文字符可以输入666个,如果中英文混合输入,只能输入666到2000之间,如果输入的字符数目超过上述的限制,将报数据库输入字段超长的错误。 原因应该是oracle采用了UTF-8的编码格式,该编码格式中英文占一个字符,中文占三个字符,在界面中可以这样限制输入: 利用String.getBytes("UTF-8")可以得到输入字符的字节大小
在工作中遇到一个问题,有一个字段在oracle数据库中长度限制为2000,该字段可以从用户界面输入,因此需要进行限制输入框的输入字符数,保证符合oracle数据库中该字段的长度限制。经过测试发现,输入英文字符可以输入2000个,输入中文字符可以输入666个,如果中英文混合输入,只能输入666到2000之间,如果输入的字符数目超过上述的限制,将报数据库输入字段超长的错误。 原因应该是oracle采用了UTF-8的编码格式,该编码格式中英文占一个字符,中文占三个字符,在界面中可以这样限制输入: 利用String.getBytes("UTF-8")可以得到输入字符的字节大小
class LimitedDocument extends PlainDocument
{
/**
* 插入字符
* @param offs 输入的字符在textField中的偏移量
* @param str 当前输入的字符串
* @param a
* @throws BadLocationException
*/
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
{
if (str.getBytes("UTF-8").length > 2000)
{
Toolkit.getDefaultToolkit().beep();
}
else
{
super.insertString(offs, str, a);
}
}
}
JTextArea limitedTextArea = new JTextArea();
limitedTextArea.setDocument(new LimitedDocument());