zoukankan      html  css  js  c++  java
  • 如何利用java把文件中的Unicode字符转换为汉字

    有些文件中存在Unicode字符和非Unicode字符,如何利用java快速的把文件中的Unicode字符转换为汉字而不影响文件中的其他字符呢,

    我们知道虽然java 在控制台会把Unicode字符直接输出成汉字,但是当遇到文件中的Unicode和非Unicode字符在一起的时候却不好用了。

    下面是代码,只需要把代码中的路径替换为你想要的路径,在建立一个转换后的文件路径。其他代码无需改变。

     1 import java.io.BufferedReader;
     2 import java.io.BufferedWriter;
     3 import java.io.File;
     4 import java.io.FileInputStream;
     5 import java.io.FileWriter;
     6 import java.io.IOException;
     7 import java.io.InputStreamReader;
     8 
     9 
    10 public class Zhtest {
    11 
    12     public static void main(String[] args) throws IOException {
    13         //源文件路径
    14         String path = "d:\Blaze.txt";
    15         //输出文件路径
    16         File write = new File("d:\Blaze1.txt");
    17         
    18         File file = null;
    19         BufferedReader br = null;
    20         BufferedWriter bw = new BufferedWriter(new FileWriter(write));
    21         file = new File(path);
    22         br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "gbk"));
    23         StringBuilder sb = new StringBuilder();
    24         String length = "";
    25         while ((length = br.readLine()) != null) {
    26             sb.append(length);
    27             bw.write(ascii2Native(sb.toString()) + "
    "); 
    28             bw.flush();
    29             sb = new StringBuilder();
    30         }
    31 
    32     }
    33 
    34     public static String ascii2Native(String str) { 
    35         StringBuilder sb = new StringBuilder(); 
    36         int begin = 0; 
    37         int index = str.indexOf("\u"); 
    38         while (index != -1) { 
    39             sb.append(str.substring(begin, index)); 
    40             sb.append(ascii2Char(str.substring(index, index + 6))); 
    41             begin = index + 6; 
    42             index = str.indexOf("\u", begin); 
    43         } 
    44         sb.append(str.substring(begin)); 
    45         return sb.toString(); 
    46     } 
    47 
    48     private static char ascii2Char(String str) { 
    49         if (str.length() != 6) { 
    50             throw new IllegalArgumentException("长度不足6位"); 
    51         } 
    52         if (!"\u".equals(str.substring(0, 2))) { 
    53             throw new IllegalArgumentException("字符必须以 "\u"开头."); 
    54         } 
    55         String tmp = str.substring(2, 4); 
    56         int code = Integer.parseInt(tmp, 16) << 8; 
    57         tmp = str.substring(4, 6); 
    58         code += Integer.parseInt(tmp, 16); 
    59         return (char) code; 
    60     } 
    61 
    62 }
  • 相关阅读:
    Django的model form
    Django之验证码
    ajax获取跨域数据
    js+css模仿打字效果
    CSS自定义消息提示
    CSS画各种二维图形
    最简单的动态进度条
    利用javascript(自定义事件)记录尺寸可变元素的尺寸变化过程
    超级简单的利用javascript实现文件拖拽事件
    javascript 公历与农历相互转换工具类
  • 原文地址:https://www.cnblogs.com/xiayahui/p/4970695.html
Copyright © 2011-2022 走看看