From: moonhkt on
On 5月28日, 下午5時58分, RedGrittyBrick <RedGrittyBr...(a)spamweary.invalid>
wrote:
> On 28/05/2010 08:45, moonhkt wrote:
>
>
>
> > On 5月27日, 上午4时39分, RedGrittyBrick<RedGrittyBr...(a)SpamWeary.invalid>
> > wrote:
> >> On 26/05/2010 21:13, RedGrittyBrick wrote:
>
> >> Oops.
> >>                   if (c<  0x10) {
> >>                       sb.append("0");
> >>                   }
> >>                  sb.append(Integer.toHexString(c);
>
> >> --
> >> RGB
>
> > Hi RGB
>
> > Our AIX editor can not able to edit GB2312 code, I update the text
> > string with byte value. It is OK ?
>
> Since you already had a temp.txt file you could have just commented-out
> the writeFile() call.
>
> I didn't so I used Java to create one - you don't really need to do this
> if you are certain that your temp.txt contains the characters in GB2312
> encoding.
>
> But see below ...
>
>
>
>
>
> > java GB2312Bytes
>
> > Change Terminal Emulation to Host charcter to GB2312., the output as
> > below
>
> > Writing  测试 to temp.txt
> > 3f3f3f3f0a
>
> > od -ct x1 temp.txt
> > 0000000    ?   ?   ?   ?  \n
> >            3f  3f  3f  3f  0a
> > 0000005
>
> > import java.io.FileInputStream;
> > import java.io.FileNotFoundException;
> > import java.io.IOException;
> > import java.io.PrintWriter;
> > import java.io.UnsupportedEncodingException;
>
> > public class GB2312Bytes {
> >       public static void main(String[] args) {
> >           String fileName = "temp.txt";
> >           String text = new String( new byte [] {
> >             (byte) 0xb2, (byte) 0xe2 , (byte) 0xca , (byte) 0xd4
>
> Firstly, you should use Unicode escapes to insert unicode characters.
> Secondly you should use Unicode code-points not GB2312 code points, this
> is because Java Strings are Unicode strings (in UTF-16 encoding)
>
> See <http://www.herongyang.com/gb2312/ug_map_24.html> 8BD5 CAD4 试 and
> <http://www.herongyang.com/gb2312/ug_map_15.html> 6D4B B2E2 测
>
> So use
>              String text = "\u6d4b\u8bd5";
>
> When you later write this Unicode String data to a file using GB2312
> encoding, Java will translate the Unicode code-point to the GB2312 code
> point.
>
> Also remember that Unicode is much bigger than GB2312, Java can only
> perform this conversion if the Unicode code points are for characters
> that are within the GB2312 character set. Unicode code points b2e2 and
> cad4, that you specified) are actually Korean Hangul characters that are
> not not in GB2312 and so are translated to "?".
>
>
>
> >          });
> >           writeFile(fileName, text, "GB2312");
> >           System.out.println(fileAsHex(fileName));
> >       }
>
> >       private static void writeFile(String fileName, String text,
> >               String encoding) {
> >           System.out.println("Writing '" + text + "' to " + fileName);
> >           PrintWriter pw;
> >           try {
> >               pw = new PrintWriter(fileName, encoding);
> >               pw.println(text);
> >               pw.close();
> >           } catch (FileNotFoundException e) {
> >               e.printStackTrace();
> >           } catch (UnsupportedEncodingException e) {
> >               e.printStackTrace();
> >           }
> >       }
>
> >       private static String fileAsHex(String fileName) {
> >           StringBuilder sb = new StringBuilder();
>
> >           FileInputStream in = null;
> >           try {
> >               in = new FileInputStream(fileName);
> >               int c;
> >               while ((c = in.read()) != -1) {
> >                   if (c<  0x10) {
> >                       sb.append("0");
> >                   }
> >                   sb.append(Integer.toHexString(c));
> >               }
> >           } catch (FileNotFoundException e) {
> >               e.printStackTrace();
> >           } catch (IOException e) {
> >               e.printStackTrace();
> >           } finally {
> >               if (in != null) {
> >                   try {
> >                       in.close();
> >                   } catch (IOException e) {
> >                       e.printStackTrace();
> >                   }
> >               }
> >           }
>
> >           return sb.toString();
> >       }
> > }
>
> --
> RGB

Thank . Rewrite the code, Output as below.

My JCreator Can not display GB2312 Code.

Writing '??' to temp.txt
b2e2cad40d0a

Process completed.
First  |  Prev  | 
Pages: 1 2
Prev: Whither JDK 7?
Next: writing to DVD