精华内容
下载资源
问答
  • 我没有修改代码编辑为本地的代码。默认使用utf-8.所以转换总是要涉及解码。 program Project1; uses SysUtils; var i: string;... //汉字16进制编码。 i:='一龥'; m:=1; for m:=1 to length(...

    我没有修改代码编辑器为本地的编码。默认使用utf-8.所以转换总是要涉及解码。 

    program Project1;
    
    uses
      SysUtils;
    
    var
      i: string;
      j:integer;
      k:shortstring;
      m:smallint;
    begin
     //汉字转16进制编码。
     i:='一龥';
     m:=1;
     for  m:=1 to  length(utf8decode(i)) do
     begin
       j:=integer(utf8decode(i)[m]);
       k:=hexstr(j,4);
       Writeln(k);
     end;
     //16进制转汉字
     writeln(utf8decode('4e00转成的汉字为:')+ widechar(strtoint('$'+'4e00')));
     readln;
    end.

     

     

    展开全文
  • 在JAVA中用getBytes()方法转换成字节序列的项目默认的编码gbk,在gbk编码汉字占2个字节,英文占用1给我字节。而utf-8编码汉字占用3个字节,英文占用1个字节。java是双字节编码,即utf-16be,中文和英文都是2个字节...

     JAVA文件传输基础—java IO流

      1.在JAVA中用getBytes()方法转换成字节序列的项目默认的编码gbk,在gbk编码汉字占2个字节,英文占用1给我字节。而utf-8编码中汉字占用3个字节,英文占用1个字节。java是双字节编码,即utf-16be,中文和英文都是2个字节。

      2.当字节序列是某种编码时,需要把字节序列变成字符串,也是需要相对应的编码方式,否则会出现乱码。

      3.文本文件本质上时字节码文件,可以是任意编码的字节序列,但是如果在中文机器上直接编码,那么文本文件只认识ansi编码

      4.java.io.File类主要用于表示文件(目录),其中File类只用于便是文件(目录)的信息,而不能用于文件内容的访问。

      5.遍历目录
    String[] filenames=dir.list();
    for(String string: filenames)
    System.out.println(dir+"\\"+string);

    返回的是字符串数组,直接子的名称,不包含子目录下的内容
    如果需要遍历子目录下的内容就需要构造File对象做递归操作
    File[] files =dir.listFiles();
    if(file!=null&&file.length>0){
    for(File file:files){
    if(file.isDirectory()){
    listDirctory
    }else{
    System.out.println(file);}
    }
    }

      6.RandomAccessFile 是JAVA提供的对文件内容的访问,可以读文件也可以写问阿金。支持随机访问文件,可以访问文件任意位置。打开文件有两种模式”rw”和”r”RandomAccessFile raf= new RondomAcceccFile(file,"rw") 打开文件是文件指针在开头pointer=0;
     

    • 写方法raf.write(int) 只能写一个字节(后八位)
      要把int i= 0x7ffffff 用write()写入,需要写4次
      raf.wtite(i>>>24);
      raf.wtite(i>>>16);
      raf.wtite(i>>>8);
      raf.wtite(i);

      如果用raf.writeInt(i),可以方便的直接写入一个int。
      也可以写成一个字节数组,然后一次写入
      String s="中";
       byte[] gbk =s.getBytes("gbk");
       raf.write(gbk);
    • 读方法int b=raf.read(), 只能读一个字节(读文件时要把指针移到头部raf.seek(0);)
      用数组的方式一次性读取文件
        byte[]buf=new byte[(int)raf.length()];
                raf.read(buf);
                System.out.println(Arrays.toString(buf));

    文件在读/写完以后一定记得关闭IO raf.close()

    • 创建一个目录File file=new File(demo); demo.mkdir();
      创建目录下的一个文件夹 File file =new File(demo,”**.txt”) file.createNewFile();

    • 定义文件的打开方式 RandomAccessFile raf =new RandomAccessFile(file,"rw");

    7.字节流 inputSteam和outputStream,其中inputStream抽象了应用数据读取数据的方式,outputStream抽象了应用数据读取数据的方式,EOF=End 读到—1就读到结尾。
    int b =in.read(); 读取一个字节无符号填充到int的低八位。in.read(byte[]buf,int start,int size)读取数据到字节数组
    out.write(byte b)写出一个byte到流,b的低八位,

    8.子类 FileInputStreasm具体实现了在文件上读取数据
    //单字节读取,效率低

        FileInputStream in = new FileInputStream(fileName);
            int b ;
            int i = 1;
            while((b = in.read())!=-1){
                if(b <= 0xf){
                    //单位数前面补0
                    System.out.print("0");
                }
                System.out.print(Integer.toHexString(b)+"  ");
                if(i++%10==0){
                    System.out.println();
                }
            }
            in.close();
    
        //批量读取,适合大文件
        FileInputStream in = new FileInputStream(fileName);
        byte[] buf = new byte[8 * 1024];
        int bytes =0:
        int j=1;
        while (bytes=in.read(buf,0,buf.length)!=-1){
            for(int i=0;i<bytes;i++){
                Systeam.ou.println(Integer.toHexString(buf[i]&oxff)+" ");
                if(i++%10=0){
                    Systeam.out.println();
                }
            }
            in.close();
        }
    

    9.子类 FileOutputStreasm具体实现了在文件上写入数据
    //单个字节写入
    FileOutStream out=new FileStream("demo/out.dat");
    out.write("a");
    int a=10;
    out.write(a>>>24);
    out.write(a>>>16);
    out.write(a>>>8);
    out.write(a);
    byte[] gbk= "中国".getbyte("gbk");
    out.write(gbk);
    out.close;

    10.子类 FileIntputStreasm和子类 FileOutputStreasm
       //单字节的copy文件,不带缓冲进行文件拷贝

     public static void copyFileByByte(File srcFile,File destFile)throws IOException{
                if(!srcFile.exists()){
                    throw new IllegalArgumentException("文件:"+srcFile+"不存在");
                }
                if(!srcFile.isFile()){
                    throw new IllegalArgumentException(srcFile+"不是文件");
                }
                FileInputStream in = new FileInputStream(srcFile);
                FileOutputStream out = new FileOutputStream(destFile);
                int c ;
                while((c = in.read())!=-1){
                    out.write(c);
                    out.flush();
                }
                in.close();
                out.close();
            }
    
        }
        //批量copy文件,利用带缓冲的字节流
         public static void copybyBuffer(File srcFile,File destFile)throws IOException{
            if(!srcFile.is exists()){
                throw new IllegalArgumentExcception(srcFile+"文件不存在");               
            }
            if(!srcFile.isFile()){
                throw new IllegalArgumentExcception(srcFile+"不是文件");
            }
            BufferedInputStream bis=new BufferedInputSteream(
                                    newFileInputStream(srcFile));
            BufferedOutputStream bos=new BufferedOutputStream(
                                    new FileOutputStream(destFile));
            int c;
            while((c=bis.read())!=-1){
                bos.write(c);
                bis.flush();
            }
            bis.close();
            bos.close();                                            
         }
    
         //文件拷贝,字节批量读取(最快)
        public static void copyFile(File srcFile,File destFile)throws IOException{
            if(!srcFile.exists()){
                throw new IllegalArgumentException("文件:"+srcFile+"不存在");
                }
            if(!srcFile.isFile()){
                throw new IllegalArgumentException(srcFile+"不是文件");
                }
            FileInputStream in = new FileInputStream(srcFile);
            FileOutputStream out = new FileOutputStream(destFile);
            byte[] buf = new byte[8*1024];
            int b ;
            while((b = in.read(buf,0,buf.length))!=-1){
                out.write(buf,0,b);
                out.flush();//最好加上
             }
             in.close();
             out.close();
    
    }
         //FileOutputStream--->write()方法相当于一滴一滴地把水“转移”过去
         //DataOutputStream-->writeXxx()方法会方便一些,相当于一瓢一瓢把水“转移”过去
         //BufferedOutputStream--->write方法更方便,相当于一飘一瓢先放入桶中,再从桶中倒入到另一个缸中,性能提高了
    

    11.字符流 一次处理一个字符,底层仍然是基本的字节序列
    InputStreamReader 完成byte流解析为char流,按照编码解析
    OutputStreamReader 完成char流解析为byte流,按照编码解析

        InputStreamReader isr = new InputStreamReader(
                                new FileInputStream("e:\\javaio\\imoocutf8.txt"),"utf-8");//默认项目的编码,操作的时候,要写文件本身的编码格式
        OutputStreamWriter osw = new OutputStreamWriter(
                                 new FileOutputStream("e:\\javaio\\imoocutf81.txt"),"utf-8");
        /*int c ;
        while((c = isr.read())!=-1){
            System.out.print((char)c);
        }*/
        char[] buffer = new char[8*1024];
        int c;
        /*批量读取,放入buffer这个字符数组,从第0个位置开始放置,最多放buffer.length个
          返回的是读到的字符的个数
        */
        while(( c = isr.read(buffer,0,buffer.length))!=-1){
            String s = new String(buffer,0,c);
            System.out.print(s);
            osw.write(buffer,0,c);
            osw.flush();
        }
        isr.close();
        osw.close();
    
    }
    
    展开全文
  • 二代身份证读卡的二次开发

    千次阅读 2012-11-05 18:05:24
    因为二代身份证里编码为GB13000,汉字在java处理中存在问题,处理思想为先把16进制字节高低位互换(汉字字节即可),然后用UTF-16转换成中文字符 2. 图片信息处理(用到jna.jar包) 图片信息处理必须调用第三方...
    1. 基本信息处理
    因为二代身份证里编码为GB13000,汉字在java处理中存在问题,处理思想为先把16进制字节高低位互换(汉字字节即可),然后用UTF-16转换成中文字符

    2. 图片信息处理(用到jna.jar包)
    图片信息处理必须调用第三方提供dll,GetInfo.DLL,过程是先在java中保存16进制字节为一个wlt文件在用GetInfo.DLL中的getBMP函数,生成bmp图片,在从bmp提取图片字节,函数如下(直接调用getPictureBytes即可),或者直接显示bmp图片即可

    import com.sun.jna.Library;
    import com.sun.jna.Native;

    public class GetZPic {
    public interface GetInfo extends Library {
          CLibrary wltToBmp = (CLibrary)  Native.loadLibrary("GetInfo",GetInfo.class);  
          void GetBmp(String wltfile,int nType);
        }

    //注意:照片的解码路径System.getProperty( "user.dir")+"\\zp.wlt";





    展开全文
  • 风越ASP代码生成 2.4

    2009-05-26 21:22:40
    基于.NET Framework2.0 《风越ASP代码生成 [FireAsp Creator]》是一款... 获取汉字的拼音、五笔编码、笔画数、笔顺名、部首等信息,并可进行汉字繁/简体,GB/BIG转换 代码编排,CSS排版、JS、ASP、HTML注释清理
  • 《风越代码生成 [FireCode Creator]》是一款采用.Net FrameWork2.0框架、... 获取汉字的拼音、五笔编码、笔画数、笔顺名、部首等信息,并可进行汉字繁/简体,GB/BIG转换 代码编排,CSS排版、JS、ASP、HTML注释清理
  •  实例052 开发一个进制转换器 66 3.4 日期时间格式的数据处理 67  实例053 动态获得系统当前日期和时间 67  实例054 手动设置系统日期时间 69  实例055 根据生日自动计算员工年龄 70  实例056 根据年份...
  • 3、增加“编码_U编码转换”命令 4、增加“音乐_播放”,“音乐_暂停”,“音乐_停止”命令 5、增加“文本_朗读”命令 1、改进“网页_验证码读取”添加“附加协议头”的参数,感谢会员 提百万 的建议 2、改进“系统_...
  • 实例052 开发一个进制转换器 66 3.4 日期时间格式的数据处理 67 实例053 动态获得系统当前日期和时间 67 实例054 手动设置系统日期时间 69 实例055 根据生日自动计算员工年龄 70 实例056 根据年份判断十二生肖 71 ...
  • 精易模块[源码] V5.15

    2015-03-21 22:03:37
    3、新增“编码_Ansi到十进制_文本型”此代码由易友【菜虫】提供,将Ansi码转换为十进制,如:将“精易论坛”转换后将返回格式如:“뺫틗싛첳”。 4、新增“目录_取运行目录”取当前被执行的易...
  • bitmap2String : 把bitmap转换成Base64编码String drawable2Bitmap : Drawable转Bitmap bitmap2Drawable : Bitmap转Drawable inputStream2Byte : Stream转换成Byte inputStream2Bitmap : 从输入流中读取Bitmap ...
  • 实例052 开发一个进制转换器 3.4 日期时间格式的数据处理 实例053 动态获得系统当前日期和时间 实例054 手动设置系统日期时间 实例055 根据生日自动计算员工年龄 实例056 根据年份判断十二生肖 实例057 获取...
  • 实例052 开发一个进制转换器 3.4 日期时间格式的数据处理 实例053 动态获得系统当前日期和时间 实例054 手动设置系统日期时间 实例055 根据生日自动计算员工年龄 实例056 根据年份判断十二生肖 实例057 获取...
  • 实例052 开发一个进制转换器 3.4 日期时间格式的数据处理 实例053 动态获得系统当前日期和时间 实例054 手动设置系统日期时间 实例055 根据生日自动计算员工年龄 实例056 根据年份判断十二生肖 实例057 获取...
  • 同时,原有的字串也扩展为之前的二倍长度,例如原来人物的名字有5个中文字符长度,实际上最多只能使用4个字,转换之后因字符串的编码使用了utf-8,可以使用6个汉字(并不是推荐你用6个字)。但是如果使用数据库来...
  • c# 加密和解密相关代码

    热门讨论 2011-09-06 11:04:59
    i++) //遍历字符串中的所有字符,只能加密字符串,无法加密汉字 { tem_Character = System.Convert.ToChar(InputText.Substring(i, 1)); //获取字符串中指定的字符 UnicodeChar = (int)tem_Character; //获取当前...
  • 实例173 验证邮政编码 278 6.2 文本与数值验证 279 实例174 验证文本框中是否输入数据 279 实例175 验证两次输入的密码是否一致 281 实例176 验证身份证号码 283 实例177 验证输入文本是否为汉字 284 实例178 验证...
  • 实例173 验证邮政编码 278 6.2 文本与数值验证 279 实例174 验证文本框中是否输入数据 279 实例175 验证两次输入的密码是否一致 281 实例176 验证身份证号码 283 实例177 验证输入文本是否为汉字 284 实例178 验证...
  • 实例173 验证邮政编码 278 6.2 文本与数值验证 279 实例174 验证文本框中是否输入数据 279 实例175 验证两次输入的密码是否一致 281 实例176 验证身份证号码 283 实例177 验证输入文本是否为汉字 284 实例178 验证...
  • 取错误文本()”返回的文本是UTF-8编码(应是GB18030编码)。 -------------------------------------------------------------------------------- 易语言5.0 相对于易语言4.x更新说明(2010/02/01):  增加...
  • C#编程经验技巧宝典

    热门讨论 2008-06-01 08:59:33
    68 <br>0091 如何根据ASCII码获得字母 68 <br>0092 编程中经常使用的ASCII码 68 <br>0093 获得汉字的区位码 69 <br>0094 如何根据区位码获得汉字 69 <br>0095 如何将行字符串转换为列字符串...
  • * 完善汉字上屏编码框同时消失功能,智能检测是否设置 “反查编码”,没有设置时生效 050831版新性: + 增加 GB/GBK/GB18030/UNICODE切换 * 完善<ENTER>=0编码上屏功能,空码时也有效 050826版新性: * 取消小于...

空空如也

空空如也

1 2
收藏数 21
精华内容 8
关键字:

utf16编码转换器汉字