Subscribe: yadan的BLOG
http://blog.sina.com.cn/rss/yadan6388.xml
Added By: Feedage Forager Feedage Grade C rated
Language: English
Tags:
character set  character  import java  java util  null  readonly  rootmap  set utf  set  string  uroot character  util regex 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: yadan的BLOG

yadan的BLOG





Published: Mon, 18 Dec 2017 00:03:10 +0800

Last Build Date: Sun, 06 May 2007 09:33:22 +0800

Copyright: Copyright 1996 - 2009 SINA Inc. All Rights Reserved.
 



javascript如何设置input/textarea等DOM元素readonly属性

Sun, 06 May 2007 09:33:22 +0800

cn是一个input/textarea DOM元素。

 

取消readonly
cn.removeAttribute( "readonly" );   //在mozilla ff工作
cn.readOnly = false;                //对IE有效 注意O大写

 

设置readonly
cn.setAttribute( "readonly", "readonly" );  //在mozilla ff工作
cn.readOnly = true;                         //对IE有效  注意O大写

 


(image)  



一个简易模版字符串替换例程,解决JDK Matcher的appendReplacement方法的小bu

Sun, 06 May 2007 08:44:07 +0800

本例程主要在于解决了java.util.regex.Matcher在调用appendReplacement(StringBuffer sb, String replacement) 方法时,如果replacement字符串以'$'开头,就不可思议地抛出java.lang.IllegalArgumentException: Illegal group reference的问题。当然,下面的程序本身也可以作为一个简易的模版解释替换的工具类直接运行。   import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.beanutils.BeanUtils; .......    static Pattern MACRO_PATTERN = Pattern.compile( "\\$\\{([^}]+)}" );    private static Object getObjectProp( Object o, String propName ) {   try {    return BeanUtils.getProperty( o, propName );    } catch(Exception e) {    return null;   }  }    /**   * 将输入字符串in中的${xx}占位符/模版变量,替换成实际值并返回
  * 对于输入字符串中的 ${abc},会在替换字符表Map rootMap中查找键值为"abc"对应的值,
  * 如果存在则用查找到的值toString()后的字符串替换,如果不存在,则 ${abc}保持不变
  * (不像freemarker处理模版那样抛出错误).
  * 对于输入字符串中的 ${abc.prop1},会先在rootMap中查找键值为abc的对象, 
  * 如果存在,再查找该对象的名字为 prop1 的属性,这个带.查询的过程还能继续,
  * 如果有一个属性对象不存在,则不必替换,否则用最后得到的属性对象的toString()值替换
  * @param rootMap   * @param in   * @return   */  public static String macroReplace(Map rootMap, String in ) {   if( in == null ) {    return null;   }   if( rootMap == null ) {    return in;   }      if( in.indexOf( "${" ) >= 0 ) {    Matcher m = MACRO_PATTERN.matcher( in );    StringBuffer sb = new StringBuffer();    while( m.find() ) {     String ms = m.group(0);                 //匹配到的 ${abc}     String s = m.group( 1 ).trim();         //匹配到的 abc //    System.out.println( "ms==" + ms ); //    System.out.println( "s==" + s );     String rep = null;                     //会将 ${abc} 替换成 rep字符串          Object val = rootMap.get( s );     if( val != null ) {      rep = val.toString();     } else {      String [] ss = s.split( "\\." );      if( ss != null && ss.length > 1 ) {       Object o = rootMap.get( ss[0] );       for(int i=1; i



关于MySql5“data too long for column”问题的探解

Wed, 02 May 2007 16:37:54 +0800

 今天在windows的DOS窗口下运行mysql命令,insert语句中只要含有汉字数据就出现“data too long for column”错误 。 后来在网上查到一篇帖子 ( http://www.blogjava.net/sakis/archive/2006/07/14/58242.html ),内容如下: 关于MySql5的“data too long for column”错误 从MySql5中运行本地脚本创建数据库,当插入中文字段时发生“data too long for column”错误。上网一查,发现多字节用户大都碰到了这种情况。google搜索网上的解决方法大都是要将数据库的编码方式为GBK或UTF8,可我在安装MySql时就选择了UTF8格式。原来错误原因是本地的脚本文件不是UTF8编码的,用记事本或UltraEdit将编码转为UTF8后问题解决。再次强调,JSP页面,数据库联接接方式,数据库创建,…,都须一致使用UTF8编码! BTW,MySql最近借着Web2.0的浪潮风头很劲啊,techn orati(好像这几天被GFW filter了),flickr,del.icio.us等一批网站都是用了MySql。MySql还专门在首页开了一大块来炫耀。 -------------------------------------------- 按照他说的方法,通过source命令或者管道导入sql文件是没错了。但在Console/DOS窗口下运行insert语句带汉字还是会出现错误,为什么?经过一番测试,总结出这样的经验: Console下调用程序发出的指令是通过一种编码格式编码之后发送出去的字符串,接收程序返回的信息同样也使用编码过的字符流。 例如我们要调用: rename 1.txt 测试.txt dos下把这行命令用某种编码方式编码成字符串,如果renmae命令接收到这个命令字符串,但错误的理解了这个命令参数的编码,或者console发送这个命令时使用了utf8编码,而renmae认为是gbk编码,则该命令会把文件重命名成乱码的名字。(因为中文windows下编码默认都是gbk,所以我们从来没遇到过这样的乱码问题。在dos窗口左上角右键-->属性,当前代码页: 936 (ANSI/OEM - 简体中文 GBK )验证DOS窗口是GBK编码发送字符)   但是,进入mysql命令之后,mysql命令可并不一定知道你发送的指令是GBK编码的,它可能认为你发送的指令是utf8编码,或者跟数据库编码一致的编码,或者跟某个全局变量一致的编码的指令字符串( mysql默认用什么编码接收指令,我没有研究清楚,请看官补充 )。所以这时候为了避免mysql误解你的指令编码,需要在调用mysql的时候加上--default-character-set=gbk 的参数。即 使用 mysql -uroot -p --default-character-set=gbk 登录即可。 注意,不要因为你的数据库是utf8编码就使用mysql -uroot -p --default-character-set=utf8去登录。我们这里说的是dos中发出的指令字符串的编码,dos窗口是不会用utf8编码去发送指令的。   当然,假设某个console发出的指令是通过utf8字符编码的,是不是应该用 mysql -uroot -p --default-character-set=utf8 ?没有试过,但分析应如此。   为什么用MYSQL-Front/SQLyog这样的GUI程序执行同样的sql就没有问题呢?在mysql-front/SQLyog登录时,就可以指定连接字符集,我猜想,登录进去之后在SQL编辑框中发送的SQL指令也许就是通过这个字符集编码的,如果跟数据库一致的话,当然没有问题了。 附上一个简单的sql测试代码: #drop database test_001; create database test_001 default character set utf8 collate utf8_general_ci; use test_001; create table config (   id                   smallint       not null default '1' ,        name                 varchar(64)    not null ,           &[...]