`
chenlk823
  • 浏览: 37356 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Unicode 的转换

 
阅读更多
转载至:
http://bbs.chinaunix.net/thread-387085-1-1.html



package com.util;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.util.Date;

public class Unicode {
      
        public static void main(String[] args) {
                Unicode unicode = new Unicode();
                unicode.toIndex("E:\\taobao");
        }
      
        /**
         * 处理某个目录下的文件
         * @param path
         */
        public void toIndex(String path) {
                toIndex(new File(path));
        }

        /**
         * 处理某个File对象
         * @param file
         */
        private void toIndex(File file) {
                Date start = new Date();
                int number = indexFiles(file);
                Date end = new Date();
                System.out.println("总共耗时" + (end.getTime()-start.getTime()) + "毫秒");
                System.out.println("一共处理" + number + "个文件");
        }

        /**
         * 递归遍历文件目录来建立索引
         * @param file
         * @return
         */
        private int indexFiles(File file) {
                if (file.isDirectory()){
                        File[] files = file.listFiles();
                        int num = 0;
                        for (int i=0;i<files.length;i++) {
                                num += indexFiles(files[i]);
                        }
                        return num;
                } else {
                        if (file.getPath().endsWith(".js"))
                        {
                                System.out.println("正在处理:" + file);
                                unicode(file.getAbsolutePath());
                                return 1;
                        }
                        else
                        {
                                System.out.println("文件类型不支持" + file);
                                return 0;
                        }
                }
        }

        /**
         * 处理文件中的unicode字符
         * @param filePath
         */
        private void unicode(String filePath) {
                String resultString = findAll(filePath);
                findLog(filePath, resultString);
        }

        public void findLog(String logFile, String logFill) {
                File file = new File(logFile);

                try {
                        BufferedWriter out = new BufferedWriter(new FileWriter(file));

                        out.write(logFill);
                        out.close();

                } catch (IOException ex) {
                        throw new RuntimeException("文件读写错误");
                }
        }

        public String findAll(String filepath) {
                StringBuffer stringBuffer = new StringBuffer();

                FileReader fileReader = null;
                BufferedReader bufferedReader = null;

                try {
                        fileReader = new FileReader(filepath);
                        bufferedReader = new BufferedReader(fileReader);

                        String line = bufferedReader.readLine();
                        while (line != null) {
                                line = decodeUnicode(line).toString();
                                stringBuffer.append(line);
                                stringBuffer.append("\r\n");
                                line = bufferedReader.readLine();
                        }
                } catch (Exception e) {
                        System.err.println(e.toString());

                } finally {
                        try {

                                bufferedReader.close();
                                fileReader.close();

                        } catch (Exception e) {
                                e.printStackTrace();

                        }
                }
                return stringBuffer.toString();
        }
      
        /**
         * This method will decode the String to a recognized String in ui.
         * 功能:将unicod码转为需要的格式
         *
         * @author javajohn
         * @param dataStr
         * @return
         */
        public static StringBuffer decodeUnicode(final String dataStr) {
                final StringBuffer buffer = new StringBuffer();
                String tempStr = "";
                String operStr = dataStr;
              
                if (operStr != null && operStr.indexOf("\\u") == -1)
                        return buffer.append(operStr); //
                if (operStr != null && !operStr.equals("") && !operStr.startsWith("\\u")) { //
                        tempStr = operStr.substring(0, operStr.indexOf("\\u")); // 
                        operStr = operStr.substring(operStr.indexOf("\\u"), operStr.length());// operStr字符一定是以unicode编码字符打头的字符串
                }
                buffer.append(tempStr);
                while (operStr != null && !operStr.equals("") && operStr.startsWith("\\u")) { // 循环处理,处理对象一定是以unicode编码字符打头的字符串
                        tempStr = operStr.substring(0, 6);
                        operStr = operStr.substring(6, operStr.length());
                        String charStr = "";
                        charStr = tempStr.substring(2, tempStr.length());
                        char letter = (char) Integer.parseInt(charStr, 16); // 16进制parse整形字符串。
                        buffer.append(new Character(letter).toString());
                        if (operStr.indexOf("\\u") == -1) { // 
                                buffer.append(operStr);
                        } else { // 处理operStr使其打头字符为unicode字符
                                tempStr = operStr.substring(0, operStr.indexOf("\\u"));
                                operStr = operStr.substring(operStr.indexOf("\\u"), operStr.length());
                                buffer.append(tempStr);
                        }
                }
                return buffer;
        }

        public static void writeUnicode(final DataOutputStream out,
                        final String value) {
                try {
                        final String unicode = gbEncoding(value);
                        final byte[] data = unicode.getBytes();
                        final int dataLength = data.length;

                        System.out.println(" Data Length is:  " + dataLength);
                        System.out.println(" Data is:  " + value);
                        out.writeInt(dataLength); // 先写出字符串的长度
                        out.write(data, 0, dataLength); // 然后写出转化后的字符串
                } catch (IOException e) {

                }
        }

        public static String gbEncoding(final String gbString) {
                char[] utfBytes = gbString.toCharArray();
                String unicodeBytes = "";
                for (int byteIndex = 0; byteIndex < utfBytes.length; byteIndex++) {
                        String hexB = Integer.toHexString(utfBytes[byteIndex]);
                        if (hexB.length() <= 2) {
                                hexB = "00" + hexB;
                        }
                        unicodeBytes = unicodeBytes + "\\u" + hexB;
                }
                // System.out.println("unicodeBytes is: " + unicodeBytes);
                return unicodeBytes;
        }

}

分享到:
评论

相关推荐

    gb18030与unicode转换表

    总的来说,GB18030与Unicode转换表是跨平台、跨语言数据交换的重要工具,理解并掌握其工作原理和使用方法,对于IT从业人员来说具有重要意义,特别是在处理中文字符集的项目中。通过深入学习和应用这个转换表,我们...

    Txt To unicode转换器

    Unicode转换器是一款针对文本文件的专业工具,主要用于将普通的ASCII编码的TXT文本文件转换为Unicode编码格式,以便在各种设备上,特别是智能手机上,能够正确显示和阅读这些文本内容。Unicode是一种广泛使用的字符...

    unicode转换

    Unicode转换是计算机科学领域中一个重要的概念,尤其是在处理多语言文本时显得尤为关键。Unicode是一种国际标准,旨在统一世界上各种语言的文字编码,使得不同语言之间的文本可以无缝交换和处理。这个标准定义了一种...

    汉字unicode转换器

    汉字Unicode转换器是一种工具,主要用于在汉字和Unicode编码之间进行转换。Unicode是一种国际标准,它为世界上几乎所有的字符,包括汉字,提供了唯一的数字表示。这个转换器使得用户能够轻松地处理汉字与计算机内部...

    ASCII & Unicode 转换工具 v2.3.3

    《ASCII与Unicode转换工具v2.3.3详解》 在计算机世界中,字符编码扮演着至关重要的角色,它使得计算机能理解和处理人类语言。ASCII和Unicode是两种广泛使用的字符编码标准,它们各自有着独特的特点和应用场景。...

    Delphi反编译工具及汉字unicode转换器

    本文将深入探讨Delphi反编译工具DeDe以及汉字Unicode转换器,它们在软件逆向工程中的应用。 首先,Delphi是一种基于Object Pascal的集成开发环境(IDE),广泛用于Windows应用程序的开发。它的编译器能将源代码编译...

    易语言源码unicode转换UTF8.rar

    本压缩包“易语言源码unicode转换UTF8.rar”显然包含了与字符编码转换相关的源代码,特别是从Unicode编码转换到UTF-8编码的实现。 Unicode是一种统一的字符编码标准,它为世界上几乎所有的字符提供了一个唯一的数字...

    unicode转换UTF8.rar

    unicode转换UTF8.rar unicode转换UTF8.rar unicode转换UTF8.rar unicode转换UTF8.rar unicode转换UTF8.rar unicode转换UTF8.rar

    汉字与unicode转换工具

    总的来说,汉字与Unicode转换工具的目的是帮助开发者和用户在不同编码系统之间进行有效的数据交换和处理,确保汉字信息的准确无误。这样的工具通常会提供接口或者命令行选项,允许用户选择输入和输出的编码格式,...

    unicode 转换工具 集合

    这个“unicode转换工具集合”很可能包含了一系列用于处理和转换Unicode编码的实用程序,帮助开发者和普通用户在不同编码格式之间进行转换。 1. Unicode基础: Unicode基于一个统一的代码点分配系统,每个字符都有...

    Unicode转换器

    Unicode转换器是一款便捷实用的工具,专为处理和转换Unicode编码至汉字而设计。Unicode是一种国际标准字符编码,它能够表示世界上几乎所有的文字系统,包括汉字。在信息技术领域,Unicode的使用至关重要,因为它确保...

    Unicode转换成GBK

    ### Unicode转换成GBK知识点解析 #### 一、前言 在多语言环境下,字符编码转换是常见的需求之一。Unicode作为一种国际标准的字符编码方案,能够支持世界上几乎所有已知的文字系统,而GBK则是一种用于简体中文环境...

    文本与unicode转换工具

    本文将深入探讨“文本与Unicode转换工具”及其相关知识点,帮助你理解和利用这种工具进行有效的文本处理。 首先,我们来理解什么是Unicode。Unicode是一个非营利组织制定的字符集,它为每个字符分配了一个唯一的...

    汉字Unicode转换器

    汉字Unicode转换器是一种工具,主要用于在汉字和Unicode编码之间进行转换。Unicode是一种国际标准,旨在为世界上所有语言提供一个统一的字符集,确保每个字符都有一个唯一的数字代码,便于计算机处理和显示各种语言...

    js unicode 转换工具

    在JS中,Unicode转换主要涉及到字符串的编码和解码。 1. Unicode编码: - `\u`转义序列:在JavaScript中,我们可以使用`\u`后跟四位十六进制数字来表示Unicode字符,例如`\u0041`代表大写字母'A'。 - `String....

    易语言UNICODE转换源码

    此压缩包中的"易语言UNICODE转换源码"很可能包含了一组用于处理字符串编码转换的源代码,可能是用于将易语言内部的字符编码格式转换为UNICODE格式,或者反之。在实际开发中,这样的工具或函数库可以用来解决字符集不...

    gb2unicode转换程序

    《GB2Unicode转换程序详解》 在信息技术领域,字符编码是一个至关重要的概念,它涉及到不同语言文字在计算机中的表示方式。GB2312(简称GB)是中国大陆广泛使用的简体中文字符集,而Unicode是一种国际标准,包含了...

    16进制ascii码Unicode转换工具

    标题中的“16进制ascii码Unicode转换工具”是指一种软件或在线服务,它能够帮助用户将16进制表示的ASCII编码转换为Unicode编码,反之亦然。这个工具的独特之处在于它支持同步输入和批量转换,使得处理大量数据变得...

    易语言Ansi与Unicode转换

    易语言Ansi与Unicode转换源码,Ansi与Unicode转换,AnsiToUnicode,UnicodeToAnsi,AnsiToUnicode2,UnicodeToAnsi2,RtlAnsiStringToUnicodeString,RtlUnicodeStringToAnsiString,RtlFreeUnicodeString,RtlFreeAnsiString...

Global site tag (gtag.js) - Google Analytics