§@ªÌ¡Gsmallufo¡AEmail¡Gsmallufo@bigfoot.com
¦Û¥j¥H¨Ó Servlet ³sµ² Database ¦b¤¤¤å¤è±Á`¬O¦³³\¦h°ÝÃD¡A¤×¨ä¬O¦b web ºÝ¡An¦Ò¼{ªº¦]¯À§ó¦h¤F¡C¦³®ÉÔ¡Aformªº¤å¦r¹J¨ì¡u³\¡A¥\¡vµ¥¦r¡A n¨Ï¥ÎªÌ¦Û¦æ¿é¤J¡§\¡¨³oÓ¸õ»¡¦r¤¸¡F¦³®ÉÔ©ú©ú§â¡u³\¡A¥\¡vinsert ¶i¸ê®Æ®w¡A¦ý¬O¨ú¥X¨Ó¤S·|Åܦ¨¡q¡H¡r¡F¦Ó¤¤¤åªº³\¦h¦¸±`¥Î¦r¡A ¨Ò¦p§»ùÖªº¡uùÖ¡v¡Aµ¥©Ç©Çªº¦r¤¸¡A§ó¬OÅý programmer ÀY¾v¥Õ¤F¤@¥b¡C¦Ó encoding ¤S¬Oӳ̫nªºÃöÁä¡A±`¨£ªº encoding ¦³¥H¤U´XÂI¡G
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F F9D0 ùÖ ù× ùØ ùÙ ùÚ ùÛ ùÜ ùÝ ùÞ ùß F9E0 ùà ùá ùâ ùã ùä ùå ùæ ùç ùè ùé ùê ùë ùì ùí ùî ùï F9F0 ùð ùñ ùò ùó ùô ùõ ùö ù÷ ùø ùù ¢~ ¢¡ ¢¢ ¢£ ùþ
§@·~¨t²Î Locale ªº encoding
¸ê®Æ®wºÝªº encoding
javac-encoding xxx
ServletRequest.setContentType("texe/html; charset=xxx)
web application deployment(web.xml) ©Ò«ü©wªº character-encoding="xxx"
new String(String.getByte("xxx),"yyy)
¦pªG¨Ï¥Î xmlc¡AÁÙ¦³ xmlc ªº encoding ¥H¤Î org.enhydra.xml.io.OutputOptions.setXmlEncoding("xxx")
³o´XºØ encoding ¸U°¨©bÄË¡A±`¨Ï programmer Â઺·wÀYÂà¦V¡A ¤£ª¾¥Ø«e¨¦b¦ó³B¡A¤£ª¾¦h¤Ö programmer ¦b¦¹®ö¶O«C¬K¡C
¤¤¤å¸Ñ¨M¤è®×¥H«e¦bºô¸ô¤W¦³³\¦h°µªk¡A¦ý¬O³q±`³£¤£¤Ó§¹¾ã¡A n¤£µM´N±o¤j¤MÁï©ò§ó°Ê¨ì JDBC driver¡A©Î¬O«·s compile ¾ãÓ¸ê®Æ®w¨t²Î¡C¦Ó¬°¤F¨t²Îªº¡u§¹¾ã©Ê¡v¡A§Ú¨Ã¤£¦Ò¼{³o¨Ç°µªk¡C §Úªº§@ªk¥i¥H§¹¾ã«O¯d postgreSQL ªº§¹¾ã©Ê¡q¥H RPM ¦w¸Ë¡A¤£¥Î«·s compile¡r¡A¦Ó¥B JDBC driver ¤£¥Î«·s compile¡C ¥H¤Uªº¨BÆJ«á¥b³¡¥Dn¬O°w¹ï XMLC ¦Ó¨¥¡A¤£¹L¤@¯ë¡u¯Â¡vªº servlet µ{¦¡¡AÀ³¸Ó«Ü®e©öºé¨ú¥X¨Ó¡C
¥H¤U¬O§Úªº¤@¨ÇÀô¹Ò¡G
RedHat Linux 7.0 (CLE 1.0)¡A¨ä¥Lªº¤¤¤åÀô¹Ò¤]À³¸Ó¨S°ÝÃD¡C ¦pªG±z¬O^¤åª©ªº¡A½Ð¦w¸Ë Chinese locale patch §Y¥i¡C «ÂI¬O¡A·í±z¿é¤J 'set' ®É¡A¥i¥H¬Ý¨ì 'LANG=zh_TW' ³oÓÀô¹ÒÅܼơC
Servlet Engine¡GResin 2.0.2
posrgreSQL-7.1.3-1PGDG.i386.rpm¡AÀɮפj¤p 1164817 bytes¡Aª½±µ¥H rpm -Uvh ¦w¸Ë§Y¥i¡A¤£¥Î«·s compile¡CJDBC driver ¤]¬Oª½±µ¨Ï¥Î postgresql-jdbc-7.1.3-1PGDG.i386.rpm ©Ò¦w¸Ëªº jdbc7.1-1.2.jar §Y¥i¡C
¸ê®Æ®w½Ð¥H Unicode ½s½X¡qcreatedb -E Unicode¡r¡A³oÂI³Ì¬°«n¡C
Web application Deployment(web.xml) ¤¤ªº <web-app> ¤£n¥[¤W character-encoding="xxx" ³oÓ attribute
¦b servlet ¤¤¡A½Ð³]©w res.setcontentType("text/html; charset=CP950");
form ªº°Ñ¼Æ¡Aª½±µ¥H getParameter("xxx") Ū¨ú¡A ¦A insert ¶i¸ê®Æ®w¡A¤£¥Î§@¥ô¦óÂà½X¡C
n±q¸ê®Æ®w¤¤Åª¨ú¸ê®Æ¡A±o§Q¥Î¡G new String(rs.getString("ColName").getBytes("8859_1"),"CP950")
n¿é¥X¾ã¥÷¤å¥ó¡qimplement org.enhydra.xml.xmlc.html.HTMLObject ªº¤å¥ó¡r®É¡A ¤£n¥Î out.println(doc.toDocument())¡A½Ð§ï¥Î¦p¤Uªº¤èªk¡G
org.enhydra.xml.io.OutputOptions options = new OutputOptions();
options.setOmitEncoding(false);
options.setXmlEncoding("Big5");
DOMFormatter formatter = new DOMFormatter(options);
if(iChingVotingsPage.getDelefate() != null) {
out.println(formatter.toString(iChingVotingsPage.getDelegate()));
) else {
out.println(formatter.toString(iChingVoringPage));
}
Servlet ÀÉ®×n¥H javac -encoding CP950 ¨Ó½sĶ¡C
¤j¥\§i¦¨¡A¦p¦¹¸Ñ¨M¤è®×¡A«h¥i¥H§¹¥þ¥¿±`³B²z©Ò¦³¨u¨£¥H¤Î¯S®í¦r¤¸¡A ¤£½×¬O´¡¤J¸ê®Æ®w¡A±q¸ê®Æ®w¨ú¥X¨Ó¦bºô¶¤W¡A³£¨S¦³°ÝÃD¡C