我从上一个页面的文本框里getParameter得到的String,getBytes后,发现所有的回车都是用0D0A表示的,但是我们的项目要求只能是0A。请问jdk提不提供什么方法可以将得到的文本内容中的回车以0A来表示呢?

解决方案 »

  1.   

    当你敲回车的时候是输入0D0A还是单0A是操作系统决定的,BIOS不过告诉操作系统“有人按了回车键”而已,Windows将它认做0D0A,Unix只需要0A,而Mac认做0D。至于你提到的如何得,据我所知jdk似乎没有吧,不过自己写个方法过滤一下,也不太麻烦
      

  2.   

    /**
         * 根据输入的字符串,和每个byte数组的总长,讲字符串转换为byte数组,若转换出来的长度不足总长,则补byte的0
         * 回车转换成非Dos格式,即0A,而不是0D0A
         * @param strVal String
         * @param allBL int
         * @return byte[]
         */
        public static byte[] getBytesByStrIgnor0D(String strVal, int allBL)
        {
            byte[] rByte = new byte[allBL];        byte[] temp = strVal.getBytes();
            //不足补0
            for(int i = 0, j = 0; i < allBL; i++)
            {
                if(i < temp.length)
                {
                    if(temp[i] == 13 && temp[i + 1] == 10) // 0D0A
                    {
                        rByte[j++] = temp[++i]; // only get 0A,ignor 0D
                    }
                    else
                    {
                        rByte[j++] = temp[i];
                    }
                }
                else
                {
                    rByte[i] = 0;
                }
            }
            return rByte;
        }