[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[转寄] Java 编程技术中汉字问题的分析及解决(转自IBM)



·¢ÐÅÈË: shaw (Íú×Ð), ÐÅÇø: JAVA
±ê  Ìâ: Java ±à³Ì¼¼ÊõÖкº×ÖÎÊÌâµÄ·ÖÎö¼°½â¾ö(ת×ÔIBM)
·¢ÐÅÕ¾: ±Ìº£ÇàÌì (Sun Dec 24 21:12:02 2000), תÐÅ

Java ±à³Ì¼¼ÊõÖкº×ÖÎÊÌâµÄ·ÖÎö¼°½â¾ö
¶ÎÃ÷»Ô
×ÔÓÉ׫¸åÈË
2000 Äê 11ÔÂ 8ÈÕ
----------------------------------------------------------------------------
----
ÔÚ»ùÓÚ Java ÓïÑԵıà³ÌÖУ¬ÎÒÃǾ­³£Åöµ½ºº×ֵĴ¦Àí¼°ÏÔʾµÄÎÊÌâ¡£Ò»´ó¶Ñ¿´²»¶®µÄ
ÂÒÂë¿Ï¶¨²»ÊÇÎÒÃÇÔ¸Òâ¿´µ½µÄÏÔʾЧ¹û£¬ÔõÑù²ÅÄܹ»ÈÃÄÇЩºº×ÖÕýÈ·ÏÔʾÄØ£¿Java ÓïÑÔ
ĬÈϵıàÂ뷽ʽÊÇUNICODE £¬¶øÎÒÃÇÖйúÈËͨ³£Ê¹ÓõÄÎļþºÍÊý¾Ý¿â¶¼ÊÇ»ùÓÚ GB2312 
»òÕß BIG5 µÈ·½Ê½±àÂëµÄ£¬ÔõÑù²ÅÄܹ»Ç¡µ±µØÑ¡Ôñºº×Ö±àÂ뷽ʽ²¢ÕýÈ·µØ´¦Àíºº×ֵıà
ÂëÄØ£¿±¾ÎĽ«´Óºº×Ö±àÂëµÄ³£Ê¶ÈëÊÖ£¬½áºÏ Java ±à³ÌʵÀý£¬·ÖÎöÒÔÉÏÁ½¸öÎÊÌâ²¢Ìá³ö
½â¾öËüÃǵķ½°¸¡£
----------------------------------------------------------------------------
----
ÏÖÔÚ Java ±à³ÌÓïÑÔÒѾ­¹ã·ºÓ¦ÓÃÓÚ»¥ÁªÍøÊÀ½ç£¬ÔçÔÚ Sun ¹«Ë¾¿ª·¢ Java ÓïÑÔµÄʱºò
£¬¾ÍÒѾ­¿¼Âǵ½¶Ô·ÇÓ¢ÎÄ×Ö·ûµÄÖ§³ÖÁË¡£Sun ¹«Ë¾¹«²¼µÄ Java ÔËÐл·¾³£¨JRE£©±¾Éí¾Í
·ÖÓ¢ÎÄ°æºÍ¹ú¼Ê°æ£¬µ«Ö»Óйú¼Ê°æ²ÅÖ§³Ö·ÇÓ¢ÎÄ×Ö·û¡£²»¹ýÔÚ Java ±à³ÌÓïÑÔµÄÓ¦ÓÃÖÐ
£¬¶ÔÖÐÎÄ×Ö·ûµÄÖ§³Ö²¢·ÇÈçͬ Java Soft µÄ±ê×¼¹æ·¶ÖÐËùÐû³ÆµÄÄÇÑùÍêÃÀ£¬ÒòΪÖÐÎÄ×Ö
·û¼¯²»Ö»Ò»¸ö£¬¶øÇÒ²»Í¬µÄ²Ù×÷ϵͳ¶ÔÖÐÎÄ×Ö·ûµÄÖ§³ÖÒ²²»¾¡Ïàͬ£¬ËùÒÔ»áÓÐÐí¶àºÍºº
×Ö±àÂë´¦ÀíÓйصÄÎÊÌâÔÚÎÒÃǽøÐÐÓ¦Óÿª·¢ÖÐÀ§ÈÅ×ÅÎÒÃÇ¡£Óкܶà¹ØÓÚÕâЩÎÊÌâµÄ½â´ð
£¬µ«¶¼±È½ÏËöË飬²¢²»Äܹ»Âú×ã´ó¼ÒÆÈÇнâ¾öÎÊÌâµÄÔ¸Íû£¬¹ØÓÚ Java ÖÐÎÄÎÊÌâµÄϵͳ
Ñо¿²¢²»¶à£¬±¾ÎÄ´Óºº×Ö±àÂ볣ʶ³ö·¢£¬·ÖÎö Java ÖÐÎÄÎÊÌ⣬ϣÍû¶Ô´ó¼Ò½â¾öÕâ¸öÎÊ
ÌâÓÐËù°ïÖú¡£
ºº×Ö±àÂëµÄ³£Ê¶
ÎÒÃÇÖªµÀ£¬Ó¢ÎÄ×Ö·ûÒ»°ãÊÇÒÔÒ»¸ö×Ö½ÚÀ´±íʾµÄ£¬×î³£ÓõıàÂë·½·¨ÊÇ ASCII ¡£µ«Ò»¸ö
×Ö½Ú×î¶àÖ»ÄÜÇø·Ö256¸ö×Ö·û£¬¶øºº×Ö³ÉǧÉÏÍò£¬ËùÒÔÏÖÔÚ¶¼ÒÔË«×Ö½ÚÀ´±íʾºº×Ö£¬ÎªÁË
Äܹ»ÓëÓ¢ÎÄ×Ö·û·Ö¿ª£¬Ã¿¸ö×Ö½ÚµÄ×î¸ßλһ¶¨Îª1£¬ÕâÑùË«×Ö½Ú×î¶à¿ÉÒÔ±íʾ64K¸ñ×Ö·û
¡£ÎÒÃǾ­³£Åöµ½µÄ±àÂ뷽ʽÓÐ GB2312¡¢BIG5¡¢UNICODE µÈ¡£¹ØÓÚ¾ßÌå±àÂ뷽ʽµÄÏêϸ×Ê
ÁÏ£¬ÓÐÐËȤµÄ¶ÁÕß¿ÉÒÔ²éÔÄÏà¹Ø×ÊÁÏ¡£ÎÒ·ôdz̸һϺÍÎÒÃǹØϵÃÜÇÐµÄ GB2312 ºÍ UNI
CODE¡£GB2312 Â룬ÖлªÈËÃñ¹²ºÍ¹ú¹ú¼Ò±ê×¼ºº×ÖÐÅÏ¢½»»»ÓñàÂ룬ÊÇÒ»¸öÓÉÖлªÈËÃñ¹²
ºÍ¹ú¹ú¼Ò±ê×¼×ַܾ¢²¼µÄ¹ØÓÚ¼ò»¯ºº×ֵıàÂ룬ͨÐÐÓÚÖйú´ó½µØÇø¼°Ð¼ÓÆ£¬¼ò³Æ¹ú
±êÂë¡£Á½¸ö×Ö½ÚÖУ¬µÚÒ»¸ö×Ö½Ú£¨¸ß×Ö½Ú£©µÄֵΪÇøºÅÖµ¼Ó32£¨20H£©£¬µÚ¶þ¸ö×Ö½Ú£¨µÍ
×Ö½Ú£©µÄֵΪλºÅÖµ¼Ó32£¨20H£©£¬ÓÃÕâÁ½¸öÖµÀ´±íʾһ¸öºº×ֵıàÂë¡£UNICODE ÂëÊÇ΢
ÈíÌá³öµÄ½â¾ö¶à¹ú×Ö·ûÎÊÌâµÄ¶à×ֽڵȳ¤±àÂ룬Ëü¶ÔÓ¢ÎÄ×Ö·û²ÉÈ¡Ç°Ãæ¼Ó¡°0¡±×ֽڵIJß
ÂÔʵÏֵȳ¤¼æÈÝ¡£Èç ¡°A¡± µÄ ASCII ÂëΪ0x41£¬UNICODE ¾ÍΪ0x00£¬0x41¡£ÀûÓÃÌØÊâ
µÄ¹¤¾ß¸÷ÖÖ±àÂëÖ®¼ä¿ÉÒÔ»¥Ïàת»»¡£
Java ÖÐÎÄÎÊÌâµÄ³õ²½ÈÏʶ
ÎÒÃÇ»ùÓÚ Java ±à³ÌÓïÑÔ½øÐÐÓ¦Óÿª·¢Ê±£¬²»¿É±ÜÃâµØÒª´¦ÀíÖÐÎÄ¡£Java ±à³ÌÓïÑÔĬÈÏ
µÄ±àÂ뷽ʽÊÇ UNICODE£¬¶øÎÒÃÇͨ³£Ê¹ÓõÄÊý¾Ý¿â¼°Îļþ¶¼ÊÇ»ùÓÚ GB2312 ±àÂëµÄ£¬ÎÒ
ÃǾ­³£Åöµ½ÕâÑùµÄÇé¿ö£ºä¯ÀÀ»ùÓÚ JSP ¼¼ÊõµÄÍøÕ¾¿´µ½µÄÊÇÂÒÂ룬Îļþ´ò¿ªºó¿´µ½µÄÒ²
ÊÇÂÒÂ룬±» Java Ð޸ĹýµÄÊý¾Ý¿âµÄÄÚÈÝÔÚ±ðµÄ³¡ºÏÓ¦ÓÃʱÎÞ·¨¼ÌÐøÕýÈ·µØÌṩÐÅÏ¢¡£

String sEnglish = ¡°apple¡±;
String sChinese = ¡°Æ»¹û¡±;
String s = ¡°Æ»¹û apple ¡±;
sEnglish µÄ³¤¶ÈÊÇ5£¬sChineseµÄ³¤¶ÈÊÇ4£¬¶ø s ĬÈϵij¤¶ÈÊÇ14¡£¶ÔÓÚ sEnglishÀ´Ëµ
£¬ Java Öеĸ÷¸öÀ඼֧³ÖµÃ·Ç³£ºÃ£¬¿Ï¶¨Äܹ»ÕýÈ·ÏÔʾ¡£µ«¶ÔÓÚ sChinese ºÍ s À´Ëµ
£¬ËäÈ» Java Soft ÉùÃ÷ Java µÄ»ù±¾ÀàÒѾ­¿¼Âǵ½¶Ô¶à¹ú×Ö·ûµÄÖ§³Ö£¨Ä¬ÈÏ UNICODE 
±àÂ룩£¬µ«ÊÇÈç¹û²Ù×÷ϵͳµÄĬÈϱàÂë²»ÊÇ UNICODE £¬¶øÊǹú±êÂëµÈ¡£´Ó Java Ô´´úÂë
µ½µÃµ½ÕýÈ·µÄ½á¹û£¬Òª¾­¹ý ¡°Java Ô´´úÂë-> Java ×Ö½ÚÂë-> ;ÐéÄâ»ú->²Ù×÷ϵͳ->ÏÔ
ʾÉ豸¡±µÄ¹ý³Ì¡£ÔÚÉÏÊö¹ý³ÌÖеÄÿһ²½Ö裬ÎÒÃǶ¼±ØÐëÕýÈ·µØ´¦Àíºº×ֵıàÂ룬²ÅÄÜ
¹»Ê¹×îÖÕµÄÏÔʾ½á¹ûÕýÈ·¡£
¡° Java Ô´´úÂë-> Java ×Ö½ÚÂ롱£¬±ê×¼µÄ Java ±àÒëÆ÷ javac ʹÓõÄ×Ö·û¼¯ÊÇϵͳĬ
ÈϵÄ×Ö·û¼¯£¬±ÈÈçÔÚÖÐÎÄ Windows ²Ù×÷ϵͳÉϾÍÊÇ GBK ,¶øÔÚ Linux ²Ù×÷ϵͳÉϾÍÊÇ
ISO-8859-1£¬ËùÒÔ´ó¼Ò»á·¢ÏÖÔÚ Linux ²Ù×÷ϵͳÉϱàÒëµÄÀàÖÐÔ´ÎļþÖеÄÖÐÎÄ×Ö·û¶¼³ö
ÁËÎÊÌ⣬½â¾öµÄ°ì·¨¾ÍÊÇÔÚ±àÒëµÄʱºòÌí¼Ó encoding ²ÎÊý£¬ÕâÑù²ÅÄܹ»Óëƽ̨Î޹ء£
Ó÷¨ÊÇ
javac ¨Cencoding GBK¡£
¡° Java ×Ö½ÚÂë->ÐéÄâ»ú->²Ù×÷ϵͳ¡±£¬ Java ÔËÐл·¾³ £¨JRE£© ·ÖÓ¢ÎÄ°æºÍ¹ú¼Ê°æ£¬
µ«Ö»Óйú¼Ê°æ²ÅÖ§³Ö·ÇÓ¢ÎÄ×Ö·û¡£ Java ¿ª·¢¹¤¾ß°ü £¨JDK£© ¿Ï¶¨Ö§³Ö¶à¹ú×Ö·û£¬µ«²¢
·ÇËùÓеļÆËã»úÓû§¶¼°²×°ÁË JDK ¡£ºÜ¶à²Ù×÷ϵͳ¼°Ó¦ÓÃÈí¼þΪÁËÄܹ»¸üºÃµÄÖ§³Ö Ja
va £¬¶¼ÄÚǶÁË JRE µÄ¹ú¼Ê°æ±¾£¬Îª×Ô¼ºÖ§³Ö¶à¹ú×Ö·ûÌṩÁË·½±ã¡£
¡°²Ù×÷ϵͳ->ÏÔʾÉ豸¡±£¬¶ÔÓÚºº×ÖÀ´Ëµ£¬²Ù×÷ϵͳ±ØÐëÖ§³Ö²¢Äܹ»ÏÔʾËü¡£Ó¢ÎIJÙ×÷
ϵͳÈç¹û²»´îÅäÌØÊâµÄÓ¦ÓÃÈí¼þµÄ»°£¬Êǿ϶¨²»Äܹ»ÏÔʾÖÐÎĵġ£
»¹ÓÐÒ»¸öÎÊÌ⣬¾ÍÊÇÔÚ Java ±à³Ì¹ý³ÌÖУ¬¶ÔÖÐÎÄ×Ö·û½øÐÐÕýÈ·µÄ±àÂëת»»¡£ÀýÈ磬Ïò
ÍøÒ³Êä³öÖÐÎÄ×Ö·û´®µÄʱºò£¬²»ÂÛÄãÊÇÓÃ
out.println(string);       // string ÊǺ¬ÖÐÎĵÄ×Ö·û´®
»¹ÊÇÓÃ
<%=string%>£¬¶¼±ØÐë×÷ UNICODE µ½ GBK µÄת»»£¬»òÕßÊÖ¶¯£¬»òÕß×Ô¶¯¡£ÔÚ JSP 1.0ÖÐ
£¬¿ÉÒÔ¶¨ÒåÊä³ö×Ö·û¼¯£¬´Ó¶øʵÏÖÄÚÂëµÄ×Ô¶¯×ª»»¡£Ó÷¨ÊÇ
<%@page ContentType=¡±text/html;charset=gb2312¡± %>
µ«ÊÇÔÚһЩ JSP °æ±¾Öв¢Ã»ÓÐÌṩ¶ÔÊä³ö×Ö·û¼¯µÄÖ§³Ö£¬£¨ÀýÈç JSP 0.92£©£¬Õâ¾ÍÐè
ÒªÊÖ¶¯±àÂëÊä³öÁË£¬·½·¨·Ç³£¶à¡£×î³£Óõķ½·¨ÊÇ
String s1 = request.getParameter(¡°keyword¡±);
String s2 = new String(s1.getBytes(¡°ISO-8859-1¡±),¡±GBK¡±);
getBytes ·½·¨ÓÃÓÚ½«ÖÐÎÄ×Ö·ûÒÔ¡°ISO-8859-1¡±±àÂ뷽ʽת»¯³É×Ö½ÚÊý×飬¶ø¡°GBK¡±
 ÊÇÄ¿±ê±àÂ뷽ʽ¡£ÎÒÃÇ´ÓÒÔISO-8859-1·½Ê½±àÂëµÄÊý¾Ý¿âÖжÁ³öÖÐÎÄ×Ö·û´® s1 £¬¾­¹ý
ÉÏÊöת»»¹ý³Ì£¬ÔÚÖ§³Ö GBK ×Ö·û¼¯µÄ²Ù×÷ϵͳºÍÓ¦ÓÃÈí¼þÖоÍÄܹ»ÕýÈ·ÏÔʾÖÐÎÄ×Ö·û´®
 s2 ¡£
Java ÖÐÎÄÎÊÌâµÄ±í²ã·ÖÎö¼°´¦Àí
±³¾°
¿ª·¢»·¾³
JDK1.15
Vcafe2.0
JPadPro
·þÎñÆ÷¶Ë
NT IIS
Sybase System
Jconnect£¨JDBC£©
¿Í»§¶Ë
IE5.0
Pwin98
.CLASS Îļþ´æ·ÅÔÚ·þÎñÆ÷¶Ë£¬ÓÉ¿Í»§¶ËµÄä¯ÀÀÆ÷ÔËÐÐ APPLET £¬ APPLET Ö»Æðµ÷Èë FR
AME ÀàµÈÖ÷³ÌÐòµÄ×÷Ó᣽çÃæ°üÀ¨ Textfield £¬TextArea£¬List£¬Choice µÈ¡£
I.       È¡ÖÐÎÄ
Óà JDBC Ö´ÐÐ SELECT Óï¾ä´Ó·þÎñÆ÷¶Ë¶ÁÈ¡Êý¾Ý£¨ÖÐÎÄ£©ºó£¬½«Êý¾ÝÓà APPEND ·½·¨¼Ó
µ½ TextArea£¨TA£© £¬²»ÄÜÕýÈ·ÏÔʾ¡£µ«¼Óµ½ List ÖÐʱ£¬´ó²¿·Öºº×ÖÈ´¿ÉÕýÈ·ÏÔʾ¡£

½«Êý¾Ý°´¡°ISO-8859-1¡± ±àÂ뷽ʽת»¯Îª×Ö½ÚÊý×飬ÔÙ°´ÏµÍ³È±Ê¡±àÂ뷽ʽ £¨Defaul
t Character Encoding£© ת»¯Îª STRING £¬¼´¿ÉÔÚ TA ºÍ List ÖÐÕýÈ·ÏÔʾ¡£
³ÌÐò¶ÎÈçÏ£º
dbstr2 = results.getString(1);
//After reading the result from DB server£¬converting it to string.
dbbyte1 = dbstr2.getBytes(¡°iso-8859-1¡±);
dbstr1 = new String(dbbyte1);
ÔÚת»»×Ö·û´®Ê±²»²ÉÓÃϵͳĬÈϱàÂ뷽ʽ£¬¶øÖ±½Ó²ÉÓá° GBK¡± »òÕß ¡°GB2312¡± ,ÔÚ
 A ºÍ B Á½ÖÖÇé¿öÏ£¬´ÓÊý¾Ý¿âÈ¡Êý¾Ý¶¼Ã»ÓÐÎÊÌâ¡£
II.    дÖÐÎĵ½Êý¾Ý¿â
´¦Àí·½Ê½Óë¡°È¡ÖÐÎÄ¡±ÏàÄ棬ÏȽ« SQL Óï¾ä°´ÏµÍ³È±Ê¡±àÂ뷽ʽת»¯Îª×Ö½ÚÊý×飬ÔÙ°´
¡°ISO-8859-1¡±±àÂ뷽ʽת»¯Îª STRING £¬×îºóËÍÈ¥Ö´ÐУ¬ÔòÖÐÎÄÐÅÏ¢¿ÉÕýȷдÈëÊý¾Ý
¿â¡£
³ÌÐò¶ÎÈçÏ£º
sqlstmt = tf_input.getText();
//Before sending statement to DB server£¬converting it to sql statement.
dbbyte1 = sqlstmt.getBytes();
sqlstmt = newString(dbbyte1,¡±iso-8859-1¡±);
_stmt = _con.createStatement();
_stmt.executeUpdate(sqlstmt);
¡­¡­
ÎÊÌ⣺Èç¹û¿Í»§»úÉÏ´æÔÚ CLASSPATH Ö¸Ïò JDK µÄ CLASSES.ZIP ʱ£¨³ÆΪ A Çé¿ö£©£¬
ÉÏÊö³ÌÐò´úÂë¿ÉÕýÈ·Ö´ÐС£µ«ÊÇÈç¹û¿Í»§»úÖ»ÓÐä¯ÀÀÆ÷£¬¶øûÓÐ JDK ºÍ CLASSPATH ʱ
£¨³ÆΪ B Çé¿ö£©£¬Ôòºº×ÖÎÞ·¨Õýȷת»»¡£
ÎÒÃǵķÖÎö£º
1.¾­¹ý²âÊÔ£¬ÔÚ A Çé¿öÏ£¬³ÌÐòÔËÐÐʱϵͳµÄȱʡ±àÂ뷽ʽΪ GBK »òÕß GB2312 ¡£ÔÚ
 B Çé¿öÏ£¬³ÌÐòÆô¶¯Ê±ä¯ÀÀÆ÷µÄ JAVA ¿ØÖÆ̨ÖгöÏÖÈçÏ´íÎóÐÅÏ¢£º
Can't find resource for sun.awt.windows.awtLocalization_zh_CN
È»ºóϵͳµÄȱʡ±àÂ뷽ʽΪ¡°8859-1¡±¡£
2.Èç¹ûÔÚת»»×Ö·û´®Ê±²»²ÉÓÃϵͳȱʡ±àÂ뷽ʽ£¬¶øÊÇÖ±½Ó²ÉÓà ¡°GBK¡± »ò¡°GB2312¡±
£¬ÔòÔÚ A Çé¿öϳÌÐòÈÔÈ»¿ÉÕý³£ÔËÐУ¬ÔÚ B Çé¿öÏ£¬ÏµÍ³³öÏÖ´íÎó£º
UnsupportedEncodingException¡£
3.ÔÚ¿Í»§»úÉÏ£¬°Ñ JDK µÄ CLASSES.ZIP ½âѹºó£¬·ÅÔÚÁíÒ»¸öĿ¼ÖУ¬ CLASSPATH Ö»°ü
º¬¸ÃĿ¼¡£È»ºóÒ»±ßÖð²½É¾³ý¸ÃĿ¼ÖÐµÄ .CLASS Îļþ£¬ÁíÒ»±ßÔËÐвâÊÔ³ÌÐò£¬×îºó·¢
ÏÖÔÚһǧ¶à¸ö CLASS ÎļþÖУ¬Ö»ÓÐÒ»¸öÊDZز»¿ÉÉٵģ¬¸ÃÎļþÊÇ£º
sun.io.CharToByteDoubleByte.class¡£
½«¸ÃÎļþ¿½µ½·þÎñÆ÷¶ËºÍÆäËüµÄÀà·ÅÔÚÒ»Æ𣬲¢ÔÚ³ÌÐòµÄ¿ªÍ· IMPORT Ëü£¬ÔÚ B Çé¿öÏÂ
³ÌÐòÈÔÈ»ÎÞ·¨Õý³£ÔËÐС£
4.ÔÚ A Çé¿öÏ£¬Èç¹ûÔÚ CLASSPTH ÖÐÈ¥µô sun.io.CharToByteDoubleByte.class £¬Ôò
³ÌÐòÔËÐÐʱ²âµÃĬÈϱàÂ뷽ʽΪ¡°8859-1¡±£¬·ñÔòΪ ¡°GBK¡± »ò ¡°GB2312¡± ¡£
Èç¹û JDK µÄ°æ±¾Îª1.2ÒÔÉϵĻ°£¬ÔÚ B Çé¿öÏÂÓöµ½µÄÎÊÌâµÃµ½Á˺ܺõĽâ¾ö£¬²âÊԵIJ½
ÖèͬÉÏ£¬ÓÐÐËȤµÄ¶ÁÕß¿ÉÒÔ³¢ÊÔһϡ£
[/b]Java ÖÐÎÄÎÊÌâµÄ¸ùÔ´·ÖÎö¼°½â¾ö[/b]
ÔÚ¼òÌåÖÐÎÄ MS Windows 98 + JDK 1.3 Ï£¬¿ÉÒÔÓà System.getProperties() µÃµ½ Ja
va ÔËÐл·¾³µÄһЩ»ù±¾ÊôÐÔ£¬Àà PoorChinese ¿ÉÒÔ°ïÖúÎÒÃǵõ½ÕâЩÊôÐÔ¡£
Àà PoorChinese µÄÔ´´úÂ룺
public class PoorChinese {
   public static void main(String[] args) {
       System.getProperties().list(System.out);
   }
}
Ö´ÐÐ java PoorChinese ºó£¬ÎÒÃÇ»áµÃµ½:
ϵͳ±äÁ¿ file.encoding µÄֵΪ GBK £¬user.language µÄֵΪ zh £¬ user.region µÄ
ֵΪ CN £¬ÕâЩϵͳ±äÁ¿µÄÖµ¾ö¶¨ÁËϵͳĬÈϵıàÂ뷽ʽÊÇ GBK ¡£
ÔÚÉÏÊöϵͳÖУ¬ÏÂÃæµÄ´úÂ뽫 GB2312 Îļþת»»³É Big5 Îļþ£¬ËüÃÇÄܹ»°ïÖúÎÒÃÇÀí½â
 Java Öкº×Ö±àÂëµÄת»¯:
import java.io.*;
import java.util.*;
public class gb2big5 {
static int iCharNum=0;
public static void main(String[] args) {
System.out.println("Input GB2312 file, output Big5 file.");
if (args.length!=2) {
System.err.println("Usage: jview gb2big5 gbfile big5file");
System.exit(1);
   }
String inputString = readInput(args[0]);
writeOutput(inputString,args[1]);
System.out.println("Number of Characters in file: "+iCharNum+".");
}
static void writeOutput(String str, String strOutFile) {
try {
FileOutputStream fos = new FileOutputStream(strOutFile);
Writer out = new OutputStreamWriter(fos, "Big5");
out.write(str);
out.close();
}
catch (IOException e) {
e.printStackTrace();
e.printStackTrace();
}
}
static String readInput(String strInFile) {
StringBuffer buffer = new StringBuffer();
try {
FileInputStream fis = new FileInputStream(strInFile);
InputStreamReader isr = new InputStreamReader(fis, "GB2312");
Reader in = new BufferedReader(isr);
int ch;
while ((ch = in.read()) > -1) {
iCharNum += 1;
buffer.append((char)ch);
}
in.close();
return buffer.toString();
}
catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
±àÂëת»¯µÄ¹ý³ÌÈçÏ£º
       ByteToCharGB2312         CharToByteBig5
GB2312------------------>Unicode------------->Big5
Ö´ÐÐ java gb2big5 gb.txt big5.txt £¬Èç¹û gb.txt µÄÄÚÈÝÊÇ¡°½ñÌìÐÇÆÚÈý¡±£¬ÔòµÃ
µ½µÄÎļþ big5.txt ÖеÄ×Ö·ûÄܹ»ÕýÈ·ÏÔʾ£»¶øÈç¹û gb.txt µÄÄÚÈÝÊÇ¡°ÇéÈ˽ڿìÀÖ¡±
£¬ÔòµÃµ½µÄÎļþ big5.txt ÖжÔÓ¦ÓÚ¡°½Ú¡±ºÍ¡°ÀÖ¡±µÄ×Ö·û¶¼ÊÇ·ûºÅ¡°£¿¡±£¨0x3F£©£¬
¿É¼û sun.io.ByteToCharGB2312 ºÍ sun.io.CharToByteBig5 ÕâÁ½¸ö»ù±¾ÀಢûÓбàºÃ
¡£
ÕýÈçÉÏÀýÒ»Ñù£¬ Java µÄ»ù±¾ÀàÒ²¿ÉÄÜ´æÔÚÎÊÌâ¡£ÓÉÓÚ¹ú¼Ê»¯µÄ¹¤×÷²¢²»ÊÇÔÚ¹úÄÚÍê³É
µÄ£¬ËùÒÔÔÚÕâЩ»ù±¾Àà·¢²¼Ö®Ç°£¬Ã»Óо­¹ýÑϸñµÄ²âÊÔ£¬ËùÒÔ¶ÔÖÐÎÄ×Ö·ûµÄÖ§³Ö²¢²»Ïñ
 Java Soft ËùÉù³ÆµÄÄÇÑùÍêÃÀ¡£Ç°²»¾Ã£¬ÎÒµÄһλ¼¼ÊõÉϵÄÅóÓÑ·¢ÐŸøÎÒ˵£¬ËûÖÕÓÚÕÒ
µ½ÁË Java Servlet ÖÐÎÄÎÊÌâµÄ¸ùÔ´¡£Á½ÖÜÒÔÀ´£¬ËûһֱΪ Java Servlet µÄÖÐÎÄÎÊÌâ
ËùÀ§ÈÅ£¬ÒòΪÿÃæ¶ÔÒ»¸öº¬ÓÐÖÐÎÄ×Ö·ûµÄ×Ö·û´®¶¼±ØÐë½øÐÐÇ¿ÖÆת»»²ÅÄܹ»µÃµ½ÕýÈ·µÄ
½á¹û£¨ÕâºÃÏóÊÇ´ó¼Ò¹«ÈϵÄΨһµÄ½â¾ö°ì·¨£©¡£ºóÀ´£¬Ëûȷʵ²»ÏëÈç´Ë¼ÌÐø°²·ÖÏÂÈ¥ÁË
£¬ÒòΪÕâÑùµÄÊÂÇéȷʵ²»Ó¦¸ÃÊǸ߼¶³ÌÐòÔ±ËùÒª×öµÄ¹¤×÷£¬Ëû¾ÍÕÒ³ö Servlet ½âÂëµÄÔ´
´úÂë½øÐзÖÎö£¬ÒòΪËû»³ÒÉÎÊÌâ¾Í³öÔÚ½âÂëÕⲿ·Ö¡£¾­¹ýËĸöСʱµÄ·Ü¶·£¬ËûÖÕÓÚÕÒµ½
ÁËÎÊÌâµÄ¸ùÔ´ËùÔÚ¡£Ô­À´ËûµÄ»³ÒÉÊÇÕýÈ·µÄ£¬ Servlet µÄ½âÂ벿·ÖÍêȫûÓп¼ÂÇË«×Ö½Ú
£¬Ö±½Ó°Ñ %XX µ±×÷Ò»¸ö×Ö·û¡££¨Ô­À´ Java Soft Ò²»á·¸Õâç۵ͼ¶µÄ´íÎ󣡣©
Èç¹ûÄã¶ÔÕâ¸öÎÊÌâÓÐÐËȤ»òÕßÓöµ½ÁËͬÑùµÄ·³ÄյĻ°£¬Äã¿ÉÒÔ°´ÕÕËûµÄ²½Öè¶Ô Servlet
.jar ½øÐÐÐ޸ģº
ÕÒµ½Ô´´úÂë HttpUtils ÖÐµÄ static private String parseName £¬ÔÚ·µ»ØÇ°½« sb£¨S
tringBuffer£© ¸´ÖÆ³É byte bs[] £¬È»ºó return new String(bs,¡±GB2312¡±)¡£×÷ÉÏ
ÊöÐ޸ĺó¾ÍÐèÒª×Ô¼º½âÂëÁË£º
HashTable form=HttpUtils .parseQueryString(request.getQueryString())»òÕß
form=HttpUtils.parsePostData(¡­¡­)
ǧÍò±ðÍüÁ˱àÒëºó·Åµ½ Servlet.jar ÀïÃæ¡£
Îå¡¢ ¹ØÓÚ Java ÖÐÎÄÎÊÌâµÄ×ܽá
Java ±à³ÌÓïÑԳɳ¤ÓÚÍøÂçÊÀ½ç£¬Õâ¾ÍÒªÇó Java ¶Ô¶à¹ú×Ö·ûÓкܺõÄÖ§³Ö¡£ Java ±à³Ì
ÓïÑÔÊÊÓ¦Á˼ÆËãµÄÍøÂ绯µÄÐèÇó£¬ÎªËüÄܹ»ÔÚÍøÂçÊÀ½çѸËٳɳ¤µì¶¨Á˼áʵµÄ»ù´¡¡£ J
ava µÄµÞÔìÕß £¨Java Soft£© ÒѾ­¿¼Âǵ½ Java ±à³ÌÓïÑÔ¶Ô¶à¹ú×Ö·ûµÄÖ§³Ö£¬Ö»ÊÇÏÖÔÚ
µÄ½â¾ö·½°¸ÓкܶàȱÏÝÔÚÀïÃ棬ÐèÒªÎÒÃǸ¶ÖîһЩ²¹³¥ÐԵĴëÊ©¡£¶øÊÀ½ç±ê×¼»¯×éÖ¯Ò²
ÔÚŬÁ¦°ÑÈËÀàËùÓеÄÎÄ×ÖͳһÔÚÒ»ÖÖ±àÂëÖ®ÖУ¬ÆäÖÐÒ»ÖÖ·½°¸ÊÇ ISO10646 £¬ËüÓÃËĸö
×Ö½ÚÀ´±íʾһ¸ö×Ö·û¡£µ±È»£¬ÔÚÕâÖÖ·½°¸Î´±»²ÉÓÃ֮ǰ£¬»¹ÊÇÏ£Íû Java Soft Äܹ»Ñϸñ
µØ²âÊÔËüµÄ²úÆ·£¬ÎªÓû§´øÀ´¸ü¶àµÄ·½±ã¡£
¸½Ò»¸öÓÃÓÚ´ÓÊý¾Ý¿âºÍÍøÂçÖÐÈ¡³öÖÐÎÄÂÒÂëµÄ´¦Àíº¯Êý£¬Èë²ÎÊÇÓÐÎÊÌâµÄ×Ö·û´®£¬³ö²Î
ÊÇÎÊÌâÒѾ­½â¾öÁ˵Ä×Ö·û´®¡£
        String parseChinese(String in)
        {
                String s = null;
                byte temp [];
                if (in == null)
                {
                        System.out.println("Warn:Chinese null founded!");
                                return new String("");
                }
                try
                {
                        temp=in.getBytes("iso-8859-1");
                        temp=in.getBytes("iso-8859-1");
                        s = new String(temp);
                }
                {
                        System.out.println("Warn:Chinese null founded!");
                                return new String("");
                }
                try
                {
                        temp=in.getBytes("iso-8859-1");
                        s = new String(temp);
                }
                catch(UnsupportedEncodingException e)
                {
                        System.out.println (e.toString());
                }
                return s;
        }
----------------------------------------------------------------------------
----
×÷Õß¼ò½é
¶ÎÃ÷»Ô£¬Ç廪´óѧµç×Ó¹¤³ÌϵѧÉú
ÏÖÔÚÕýÔÚÇ廪´óѧ΢µç×ÓѧÑо¿Ëù´ÓÊ Java ÖÇÄÜ¿¨Î¢´¦ÀíÆ÷µÄÑо¿ºÍ¿ª·¢
Áìµ¼ BBS ˮľÇ廪վµÄ Java ÌÖÂÛ×飬ΪÖÚ¶à Java ¼¼ÊõÓ¦ÓÃÕßÌṩ½â¾ö·½°¸

--
          ,        ,
         '(        )\
         | \   ___/ /
         `  \-'  _ -\
         /\   / / \/\)
        /     ' |  \ \

¡ù À´Ô´:£®±Ìº£ÇàÌì bbs.dlut.edu.cn£®[FROM: 202.118.68.59]
--
¡ù ת¼Ä:£®±Ìº£ÇàÌì bbs.dlut.edu.cn£®[FROM: palm]



Reply to: