Posted by À±°æ±¸ on February 25, 1997 at 16:00:25:
In Reply to: ÀÚ¹Ù ÇѱÛÁö¿ø ¿©ºÎ posted by ¹ÚÁø±Ô on February 25, 1997 at 10:15:07:
ÀÚ¹Ù 1.1 ¹öÀüÀÌ ÇѱÛÀ» °ÅÀÇ Á¦´ë·Î Áö¿øÇÕ´Ï´Ù.
´ÙÀ½Àº °ü·ÃµÈ ±ÛµéÀÔ´Ï´Ù.
±Û 1 (from news:han.comp.hangul)
-------------------------------
native2asciiÀÇ document¿¡´Â ºüÁ® ÀÖÁö¸¸,
`native2ascii -encoding KSC5601'À̶ó°í ¼öÇàÇϸé, Unicode-encoded ascii
file·Î conversionÇØ ÁÖ´õ±º¿ä.
¶ÇÇÑ, ´Ù¸¥ ¹®¼¿¡¼´Â jdk1.1ÀÌ KSC5601 code¸¦ Áö¿øÇÑ´Ù°í µÇ¾î ÀÖ½À´Ï´Ù.
Âü°í·Î, Çѱ۷ΠÀÛ¼ºÇÑ java source code (Áï, ÇÑ±Û º¯¼ö, ÇÑ±Û stringµîÀ» »ç¿ëÇÑ)
¸¦ À̿Ͱ°ÀÌ Unicode-encoded ascii file·Î conversionÇØ¼ compileÇÒ ¼ö ÀÖ½À´Ï´Ù.
Hwin95¿¡¼´Â (Solaris¿¡¼´Â LANG º¯¼ö°¡ ko·Î settingµÇ¾î ÀÖ´Â °æ¿ì)
java compiler°¡ source code¸¦ KSC5601¹®¼·Î ÀνÄÇØ¼ ÄÚµå º¯È¯ ÈÄ
compileÇØÁֹǷÎ, native2ascii´Â ±×´ÙÁö Çʿ伺ÀÌ ³ôÁö´Â ¾Ê½À´Ï´Ù.
TextField, ÀÔÃâ·Â classµî ¿©·¯ class¿¡¼µµ KSC5601 codeÀÇ ÀÔ·Â,
Unicode¿ÍÀÇ code º¯È¯µîÀÌ ¼öÇàµË´Ï´Ù.
ÇöÀç, Á¦°¡ testÇØ º» ¹Ù·Î´Â Unicode·ÎºÎÅÍ KSC5601 code·Î º¯È¯Àº
¹®Á¦°¡ ¾ø´Â °ÍÀ¸·Î º¸À̳ª, KSC5601 code·ÎºÎÅÍ Unicode·ÎÀÇ º¯È¯Àº
¾à°£ÀÇ bug°¡ ÀÖ½À´Ï´Ù. ÀÌ º¯È¯À» ´ã´çÇÏ´Â class°¡
sun.io.ByteToCharKSC5601Àε¥, ÀÌ classÀÇ bug¸¸ °íÄ¡¸é, ÇÑ±Û code º¯È¯°ú
°ü·ÃµÈ ¹®Á¦´Â °ÅÀÇ ¸ðµÎ ÇØ°áµÇ¸®¶ó »ý°¢µË´Ï´Ù.
ÀÌ class¿¡¼ ÇöÀç Á¦°¡ ¹ß°ßÇÑ bug´Â º¯È¯ÇÒ KSC5601 ¹®¼¿¡¼
Áß°£ Áß°£¿¡ ¹®ÀÚ¸¦ »©¸Ô°í codeº¯È¯À» ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù.
ÇÏÁö¸¸, ¿©·¯¹ø¿¡ °ÉÃļ code º¯È¯À» ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó,
ÇѲ¨¹ø¿¡ code º¯È¯À» ÇÏ´Â °æ¿ì¿¡´Â ÀÌ·¯ÇÑ bug°¡ »ý±âÁö ¾Ê½À´Ï´Ù.
¿¹¸¦ µé¾î,
native2ascii´Â ÇѲ¨¹ø¿¡ codeº¯È¯À» Çϱ⶧¹®ÀÎÁö bug°¡ ¹ß°ßµÇÁö ¾Ê¾Ò½À´Ï´Ù.
±âŸ, ÇÑ±Û ¹®¼¸¦ ÀоîµéÀÏ ¶§¿¡µµ BufferedReaderµîÀ» ¾Õ¿¡ ºÙ¿©¼
Çѹø¿¡ codeº¯È¯ÀÌ µÇµµ·Ï ÇØÁÖ¸é Àß µ¿ÀÛÇÒ °ÍÀÔ´Ï´Ù.
¿¹: Reader in = new BufferedReader(new FileReader("doc.ks"))
Sun¿¡¼´Â bug report¸¦ ¹Þ¾Æ¼ jdk1.1ÀÇ bug¸¦ °íÄ£ jdk1.11À»
Á¶¸¸°£ ¹ßÇ¥ÇÒ °ÍÀ̶ó°í ÇÏ´Ï, ¿©±â¿¡ ±â´ëÇØ º¾´Ï´Ù.
--
±è ´öÅ (dtkim@camars.kaist.ac.kr)
KAIST CS Dept. CA Lab
±Û 2 (from news:han.comp.hangul)
-------------------------------
>
> Yoon Kyung Koo wrote:
> >
> > I tested JDK 1.1 final release on Hangul Windows NT 4.0 (Workstaion
> > version).
> > First, TextArea and TextField works on input and display but have some
> > problems...
> > When these TextComponents get hangul input including space (or
> > punctuation marks) they added '?' after space (or punctuation marks)
> > occasionally.
>
> I don't know why those components generate such garbage key events.
> However, if you remove those bad events as follows,
> the problem can be solved.
>
> ---------------------------
> import java.awt.*;
> import java.awt.event.*;
>
> class TextAreaTest extends Frame
> { TextArea ta = new TextArea();
> { add(ta, "Center");
> }
> public static void main(String[] args)
> { TextAreaTest f = new TextAreaTest();
> f.ta.addKeyListener(new KeyAdapter()
> { public void keyTyped(KeyEvent ev)
> { if (ev.getKeyCode() == 0
> && ev.getKeyChar() == '?')
> ev.consume();
> }
> });
> f.setSize(300, 300);
> f.setVisible(true);
> }
> }
> ---------------
>
> > And I couldn't get args's correct value for Hangul in main methods.
> > This can be my fault. I am confused about the string value of args[]
> > in main method. Are the string value of args[] converted unicode value
> > of localized input, aren't they?
> > Could anybody tell me how I can handle hangul characters as args of
> > main method?
>
> In Solaris, if LANG variable is set to "ko"
> java interpreter treat argument as KSC5601 code.
> But in Hangul Windows 95, it treat argument as ISO8859-1
>
> This problem can be solved as follows.
> String class provide constructors and methods for code conversion.
> You can get original bytes of the argument by converting argument string
> to ISO8859-1 bytes.
> And then, you can convert the original bytes to Unicode using
> KSC5601-to-Unicode conversion
>
> ------------------------
> class ArgTest
> { public static void main(String[] args)
> throws java.io.UnsupportedEncodingException
> { System.out.println(args[0]);
>
> byte[] rawBytes = args[0].getBytes("8859_1");
> String correctedString = new String(rawBytes, "KSC5601");
> System.out.println(correctedString);
> }
> }
> ------------------------
>
> --
> Deogtae Kim (±è´öÅÂ)
> CA Lab. CS Dept. KAIST
> E-Mail : dtkim@camars.kaist.ac.kr
> Phone : +82-42-869-3569
> Fax : +82-42-869-3510
Yoon Kyung Koo wrote:
>
> I tested JDK 1.1 final release on Hangul Windows NT 4.0 (Workstaion
> version).
> First, TextArea and TextField works on input and display but have some
> problems...
> When these TextComponents get hangul input including space (or
> punctuation marks) they added '?' after space (or punctuation marks)
> occasionally.
I don't know why those components generate such garbage key events.
However, if you remove those bad events as follows,
the problem can be solved.
---------------------------
import java.awt.*;
import java.awt.event.*;
class TextAreaTest extends Frame
{ TextArea ta = new TextArea();
{ add(ta, "Center");
}
public static void main(String[] args)
{ TextAreaTest f = new TextAreaTest();
f.ta.addKeyListener(new KeyAdapter()
{ public void keyTyped(KeyEvent ev)
{ if (ev.getKeyCode() == 0
&& ev.getKeyChar() == '?')
ev.consume();
}
});
f.setSize(300, 300);
f.setVisible(true);
}
}
---------------
> And I couldn't get args's correct value for Hangul in main methods.
> This can be my fault. I am confused about the string value of args[]
> in main method. Are the string value of args[] converted unicode value
> of localized input, aren't they?
> Could anybody tell me how I can handle hangul characters as args of
> main method?
In Solaris, if LANG variable is set to "ko"
java interpreter treat argument as KSC5601 code.
But in Hangul Windows 95, it treat argument as ISO8859-1
This problem can be solved as follows.
String class provide constructors and methods for code conversion.
You can get original bytes of the argument by converting argument string
to ISO8859-1 bytes.
And then, you can convert the original bytes to Unicode using
KSC5601-to-Unicode conversion
------------------------
class ArgTest
{ public static void main(String[] args)
throws java.io.UnsupportedEncodingException
{ System.out.println(args[0]);
byte[] rawBytes = args[0].getBytes("8859_1");
String correctedString = new String(rawBytes, "KSC5601");
System.out.println(correctedString);
}
}
------------------------
--
Deogtae Kim (±è´öÅÂ)
CA Lab. CS Dept. KAIST
E-Mail : dtkim@camars.kaist.ac.kr
Phone : +82-42-869-3569
Fax : +82-42-869-3510