数据库字符编码和界面文本输入框字数限制问题

来源:互联网 发布:怎样评价张作霖 知乎 编辑:程序博客网 时间:2024/05/16 12:05
作者:Maverick
 blog:http://blog.csdn.net/zhaohuabing  转载请注明出处

在工作中遇到一个问题,有一个字段在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());


 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 行测做题速度太慢怎么办 普通话准考证丢了怎么办 信用卡还款逾期了怎么办 淮北建洗煤厂需要怎么办 建设工程不结算怎么办 考监理没有职称怎么办 公开招标两次招标失败怎么办 山东省植保员证怎么办 工伤没开病假单怎么办 邮储银行怎么办金卡 农机被交警查怎么办 广联达识别板筋负筋重叠怎么办 掌上品的钱怎么办 财务纠纷被起诉怎么办 牙齿补后疼痛怎么办 牙齿表面蛀了怎么办 虫牙全掉了怎么办 牙齿蛀光了怎么办 虫牙全部掉完了怎么办 不喜欢向人请教怎么办 单位不交公积金怎么办 电锯链条掉了怎么办 天津公积金怎么办外地转入 学籍档案涂抹了怎么办 气相点火失败怎么办 小米闹钟声音小怎么办 河北省监理员证怎么办 买的商铺烂尾了怎么办 钢表带被磨花了怎么办 资料员到期了怎么办 八大员挂靠社保怎么办 安许证三类人员不足了怎么办 考试准考证号写错了怎么办 科目一失约两次怎么办 钢筋送检两次不合格怎么办 公路原材料抽检不合格怎么办 混凝土回弹强度不合格怎么办 毕业证照片太丑怎么办 政审时找不到档案怎么办 劳动解除书开不出来怎么办 双流办健康证怎么办