JAVA 中文 unicode 相互转换 文件读取详解编程语言

package com.test; 
import org.junit.Test; 
 
public class JunitTest { 
   
    @Test 
    public void test(){ 
        String path = "D://1.txt"; 
        String newPath = "D://2.txt"; 
        try { // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw 
 
            /* 读入TXT文件 */// 要读取以上路径的input。txt文件 
            File filename = new File(path); 
            // 建立一个输入流对象reader 
            InputStreamReader reader = new InputStreamReader(new FileInputStream(filename)); 
            // 建立一个对象,它把文件内容转成计算机能读懂的语言 
            BufferedReader br = new BufferedReader(reader); 
            String line = ""; 
            line = br.readLine(); 
                /* 写入Txt文件 */// 相对路径,如果没有则要建立一个新的output。txt文件 
            File writename = new File(newPath); 
            // 创建新文件 
            writename.createNewFile(); 
            BufferedWriter out = new BufferedWriter(new FileWriter(writename)); 
            while (line != null) { 
                // 一次读入一行数据 
                line = br.readLine(); 
                System.out.println(line.toString()); 
                // /r/n即为换行 
                out.write(cnToUnicode(line)+"/r/n"); 
                out.flush(); // 把缓存区内容压入文件 
            } 
            out.close(); // 最后记得关闭文件 
 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 
 
    @Test 
    public void test1(){ 
        System.out.println(cnToUnicode("部队")); 
        System.out.println(unicodeToCn("//u4e2d//u56fd//u4eba//u6c11//u89e3//u653e//u519b//u37//u31//u39//u38//u38//u90e8//u961f")); 
    } 
 
    /** 
     * 中文转unicode 
     * @param cn 
     * @return 
     */ 
    private static String cnToUnicode(String cn) { 
        char[] chars = cn.toCharArray(); 
        String returnStr = ""; 
        for (int i = 0; i < chars.length; i++) { 
            returnStr += "//u" + Integer.toString(chars[i], 16); 
        } 
        return returnStr; 
    } 
 
    /** 
     * unicode转中文 
     * @param unicode 
     * @return 
     */ 
    private static String unicodeToCn(String unicode) { 
        /** 以 / u 分割,因为java注释也能识别unicode,因此中间加了一个空格*/ 
        String[] strs = unicode.split("////u"); 
        String returnStr = ""; 
        // 由于unicode字符串以 / u 开头,因此分割出的第一个字符是""。 
        for (int i = 1; i < strs.length; i++) { 
            returnStr += (char) Integer.valueOf(strs[i], 16).intValue(); 
        } 
        return returnStr; 
    } 
 
} 

  

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/18555.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论