字符编码的学习

    技术2024-11-25  30

    1)  Unicodegb2312的程序实战

    package IO;

     

    public class CharCode {

     

     

        public static void main(String[] args) throws Exception{

           System.setProperty("file.encoding", "iso8859-1");//更改java虚拟机的环境变量

           System.getProperties().list(System.out);//java虚拟机的环境变量都输出出来

           String strChina="中国";//定义一个字符串

           for (int i = 0; i < strChina.length(); i++) {

               System.out.println(Integer.toHexString((int)strChina.charAt(i)));//输出上边字符串每个字符的Unicode16进制形式

           }

           byte [] buf=strChina.getBytes();//把字符串转换为gb2312形式

           for (int i = 0; i < buf.length; i++) {

               System.out.println(Integer.toHexString(buf[i]));//打印中国的gb231216进制形式

           }

           //System.out.write(buf,0,4);   //输出字符数组的一组值,会刷新缓冲区

           for (int i = 0; i < buf.length; i++) {

               System.out.write(buf[i]); //输出字符数组的单个值,不会刷新缓冲区

           }

           System.out.println();   //调用该方法会刷新缓冲区

           //System.out.println("中国"); //用该方法输出数据时,会自动调用系统的给出的编码形式

     

        }

    }

    2)  字符编码

    package IO;

     

    public class CharDecode {

     

        /**

         * @param args

         */

        public static void main(String[] args) throws Exception{

           // TODO Auto-generated method stub

           System.getProperties().put("file.encoding", "iso8859-1");//设置虚拟机环境变量

           //System.getProperties().list(System.out);

           System.out.println("please enter a chinese String:");

           byte [] buf=new byte[1024];

           String infoStr=null;

           int pos=0;

           while (true) {

               int ch=System.in.read();//从键盘输入字符

               System.out.println(Integer.toHexString(ch));//查看该字符的16进制形式

               switch (ch) {

               case '/r':

                  break;

               case '/n'://当输入回车时 程序结束,把输入的字符转化为字符串,再输出字符串的16进制形式

                  infoStr=new String(buf,0,pos,"gb2312");

                  for (int i = 0; i < infoStr.length(); i++) {

                      System.out.println(Integer.toHexString(infoStr.charAt(i)));

                  }

                  System.out.println(infoStr);

                  break;

               default:

                  buf[pos++]=(byte)ch;//把输入的字符依次存储到字符数组里

               }

           }

        }

     

    }

    出现问题:在myEclipse中的设置的虚拟机环境变量无效

     

    最新回复(0)