ÁÉ­}ºô > IT§Þ³N .Net±M°Ï > ¤å³¹
  IT¸ê°T·j¯Á
 
IT²£«~·j¯Á
[µ{¦¡¶}µo][ºôºÞ¥@¬É][ºô¸ô¦w¥þ][¼Æ¾Ú®w§Þ³N]
[§@·~¨t²Î][¹Å»«²á¤Ñ¡P½u¤W³X½Í][¬¡°Ê¶°ÀA]
[ºë±m±MÃD][Symantec±M°Ï][­q¾\IT§Þ³N¶g¥Z]
[¶}µo½×¾Â][ºôºÞ½×¾Â][¦w¥þ½×¾Â][¼Æ¾Ú®w½×¾Â]
[§@·~¨t²Î½×¾Â][Sybase±M°Ï][IBM dW§Þ³N±M°Ï]
[¯f¬r¨D§U][¯f¬r»Pº|¬}¼½³ø][¤åÀÉ¡P·½½X¤U¸ü]

¬G»Ù¸ÑªR¡G.NET¶}µo¥¿«h¹Bºâ¦¡¤¤BUG¤@¨Ò

µo§G®É¶¡¡G2008.06.10 06:29     ¨Ó·½¡GÁÉ­}ºô    §@ªÌ¡Gkorn

¤Sµo²{¤F¤@­Ó .net ªºbug!³Ìªñ¦b¨Ï¥Î¥¿«h¹Bºâ¦¡ªº®É­Ôµo²{¡G¦b©¿²¤¤j¤p¼gªº®É­Ô¡A¤Ç°t­È±q 0xff ¨ì 0xffff ¤§¶¡ªº©Ò¦³¦r²Å¡A¥¿«h¹Bºâ¦¡³ºµM¤]¯à¤Ç°t¨â­Ó ASCII ¦r²Å¡Gi(code: 0x69) ©M I(code: 0x49);¦ý¬O¤´µM¤£¯à¤Ç°t¨ä¥Lªº ASCII ¦r¥À©M¼Æ¦r¡C

¤ñ¦p¥H¤Uªº¥N½X´N¬O¥Î¨Ó´ú¸Õ¥Î¥¿«h¹Bºâ¦¡¤Ç°t±q 0xff ¨ì 0xffff ªº¦r²Å¡C¦Ó­È½d³ò¦b 0 ¨ì 0xfe ªº©Ò¦³¦r²Å¬O¤£¯à³Q¤Ç°tªº¡C

¡@¡@1234567891011121314151617Regex regex = new Regex(@"[/u00FF-/uFFFF]+"); 
¡@¡@// The characters, whoes value are smaller than 0xff, are not expected to be matched. 
¡@¡@for (int i = 0; i < 0xff; i++) { 
¡@¡@string s = new string(new char[] { (char)i }); 
¡@¡@Debug.Assert( 
¡@¡@!regex.IsMatch(s), 
¡@¡@string.Format("The character was not expected to be matched: 0x{0:X}!", i)); 
¡@¡@} 
¡@¡@// However, the characters whoes value are greater than 0xfe are expected to be matched. 
¡@¡@for (int i = 0xff; i <= 0xffff; i++) { 
¡@¡@string s = new string(new char[] { (char)i }); 
¡@¡@Debug.Assert( 
¡@¡@regex.IsMatch(s), 
¡@¡@string.Format("The character was expected to be matched: 0x{0:X}!", i)); 
¡@¡@}

³o®Éªº¹B¦æµ²ªG¬O¥¿±`ªº¡A¨S¦³¥ô¦óªºÂ_¨¥¿ù»~¥X²{¡C

µM¦Ó·í¨Ï¥Î©¿²¤¤j¤p¼gªº¤Ç°t¼Ò¦¡®É¡Aµ²ªG´N¤£¤@¼Ë¤F¡C±N¤W­±¥N½X¤¤ªº²Ä¤@¦æ§ï¦¨¡G

1Regex regex = new Regex(@"[/u00FF-/uFFFF]+", RegexOptions.IgnoreCase);

µ{¦¡¹B¦æªº®É­Ô´N·|¦³¨â³BÂ_¨¥¿ù»~¡C¥¦­Ì¤À§O¬O¦r²Å­È¬° 73 ©M 105¡A¤]´N¬O¤p¼g¦r¥À i ©M¤j¼g¦r¥À I¡C ³o­Ó bug «D±`©_©Ç¡A§Oªº¦r²Å³£«Ü¥¿±`!¦Ó¥B¥Î javascript ¸}¥»¦b IE (ª©¥»¬O6.0)ùØ­±¹B¦æ¤]¦P¼Ë¦³³o»ò bug ¦s¦b(¤ñ¦p¤U­±³o¬q¥N½X)¡CµM¦Ó¦b Firefox ¤¤¹B¦æ´N¬O¨S¦³°ÝÃDªº¡CÁÙ¬O Firefox ¦n°Ú¡A¨þ¨þ!

1234567891011121314151617var re = /[/u00FF-/uFFFF]+/; 
¡@¡@// var re = /[/u00FF-/uFFFF]+/i; 
¡@¡@for(var i=0; i<0xff; i++) { 
¡@¡@var s = String.fromCharCode( i ); 
¡@¡@if ( re.test(s) ){ 
¡@¡@alert( 'Should not be matched: ' + i + '!' ); 
¡@¡@} 
¡@¡@} 
¡@¡@for(var i=0xff; i<=0xffff; i++) { 
¡@¡@var s = String.fromCharCode( i ); 
¡@¡@if ( !re.test(s) ){ 
¡@¡@alert( 'Should be matched: ' + i + '!' ); 
¡@¡@} 
¡@¡@}

¡]³d¥ô½s¿è¡G¶³¤l¡^


[ µoªíµû½× ] ¦rÅé[ ¤j¡B¤¤¡B¤p ] [ ¦C¦L ] [ ¶i¤J³Õ«È ] [ ¶i¤J½×¾Â ]  [ ±ÀÂ˵¹ªB¤Í ]
  ¡i¬ÛÃö¤å³¹¡j
¡P ASP.NET¹ê²{­¶­±¶¡­È¶Ç»¼ªº´XºØ¤èªk¤¶²Ð (06-06) ¡P Ãö©óVS 2008©M.NET 3.5 Beta2·s¯S©Ê¤¶²Ð (06-05)
¡P ¹ê¥Î§Þ¥©¡G.Net®Ø¬[Ãþ®w¤¤©w®É¾¹Ãþªº¨Ï¥Î (06-05) ¡P C#½sµ{¹ê¥Î§Þ¥©¡G»´ÃP¹ê²{¹ï¤å¥óªº¾Þ§@ (06-04)
¡P .Net¶}µoº©½Í¡GÃö©ó©R¦WªÅ¶¡©M¥Ø¿ý¹º¤À (06-04) ¡P .Net(C#)¶}µoº©½Í¡GÃö©óÅܼƪº©R¦W©MÄÝ©Ê (06-04)
¡P ºô¸ô¶}µo¤p¶K¤h¡GPHP©MMySQL¶}µo8­Ó§Þ¥© (06-03) ¡P ¡m.NET¤¤ªºµ{¦¡¶°©M°t¸m¡n½Òµ{±À¤¶ (12-05)
¡P ·L³n5¦~«eº|¬}Åå¤H­«²{¡@Vista¦P¼Ë­±Á{«Â¯Ù (12-02) ¡P JAVA©M.NET¨â­Ó¥­»O¹ï©ó¦w¥þ¥\¯àªº¤ñ¸û (09-07)
  ¡i«È¤á»Ý¨D¤ÏõXªí¡j
* ©m¡@¡@¦W:
§ó¦h¸ê®Æ¡@ ¤F¸Ñ¤è®×¡@ »{ÃѼt°Ó
* ³æ¦ì¦WºÙ:
* Ápô¹q¸Ü:
* ¹q¤l¶l¥ó:
  ÁÉ­}±ÀÂË  
  ¤â¾÷¡P¸ê¶O ¡P·s«~¡P¾ÉÁÊ¡Pµû´ú¡P¤â¾÷¸ê¶O¡P¼e±a
¤â¾÷·j¯Á  ¿Õ°ò¨È N73 MOTO Z6
  IT²£«~ ¡Pµ§°O¥»¡P»O¦¡¾÷¡P¦øªA¾¹¡P¦C¦L¡P§ë¼v
IT²£«~·j¯Á 
  IT§Þ³N ¡P¶}µo¡PºôºÞ¡P¦w¥þ¡P¼Æ¾Ú®w¡P§@·~¨t²Î
  ¸ê°T¤Æ ¡P¼öÂI¡P±MÃD¡P³X½Í¡P¶g¥Z¡P¤è®×®×¨Ò
¡P ¸ê°T¤Æ¥«³õ¦Ê®aª§»ï SaaS²`³´ª§Ä³¡§ªd¼æ¡¨
¡P ´£°ªºÞ²z¤ô·Ç "¨â´Ï"CIOÀ³¨ã³Æªº¤»¤j¯à¤O
¡P °ê²£ITIL¹Bºû¥ý¦æªÌ ¥|¤j¼t°Ó¨¤¤OBI¥«³õ
¡P ª÷¿Ä¦æ·~GSN±MÃD¸Ñ¨M¤è®× ¥ø·~ºô¸Ñ¨M¤è®×
  IT³Õ«È ¡P´¿¼C¬î¡P¶µ¥ß­è¡PJava¾Ç²ß¡PºôºÞ
  IT§Þ³N½×¾Â ¡P¶}µo¡PºôºÞ¡P¦w¥þ¡P¼Æ¾Ú®w¡P¨t²Î