2

以前に聞いたことがあるとすみません。Javaを使用してテキストファイルを処理しようとしています。テキストファイルはMSSQLServerからエクスポートされます。PSPad(任意のファイルを16進形式で表示できる一種のテキストエディタ)で開くと、テキストファイルがにあることがわかりますUTF-16LE。私は他の誰かからそれを得ているので、それはかなり可能です。

現在、私のJavaプログラムはその形式を処理できません。ASCIIそれで、テキストファイルをフォーマットに変換したり、前処理などを実行したりする方法があるかどうかを知りたいと思いました。ファイルを変更できます。

どんな助けでも大歓迎です。

ありがとう。

編集1

このプログラムを作成しましたが、期待どおりに動作していません。PSPadで出力ファイルを見ると、各文字を2バイトの文字として見ることができます。たとえば、「2」は32ではなく3200です。「M」は4Dなどではなく4D00です。ただし、出力ファイルのエンコーディングはUTF-8であると言われています。私はここでちょっと混乱しています。誰かが私が間違っていることを教えてもらえますか?

public static void main(String[] args) throws Exception {

        try {
            // Open the file that is the first
            // command line parameter
            FileInputStream fstream = new FileInputStream(
                    "input.txt");
            // Get the object of DataInputStream
            DataInputStream in = new DataInputStream(fstream);
            BufferedReader br = new BufferedReader(new InputStreamReader(in,"UTF-16LE"));
            String strLine;
            // Read File Line By Line
            while ((strLine = br.readLine()) != null) {
                // Write to the file
                writeToFile(strLine);
            }
            // Close the input stream
            in.close();
        } catch (Exception e) {// Catch exception if any
            System.err.println("Error: " + e.getMessage());
        }

        System.out.println("done.");
    }

    static public void writeToFile(String str) {
        try {
            OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("output.txt", true), "UTF-8");
            BufferedWriter fbw = new BufferedWriter(writer);
            fbw.write(str);
            fbw.close();
        } catch (Exception e) {// Catch exception if any
            System.err.println("Error: " + e.getMessage());
        }
    } 

編集2

スナップショットは次のとおりです。

PSPad(無料の16進ビューア)の入力ファイルここに画像の説明を入力してください

PSPadの出力ファイルここに画像の説明を入力してください

これは私が見たいと思っていたものです: ここに画像の説明を入力してください

4

3 に答える 3

6

文字セットUTF-16LEのInputStreamReaderを作成すると、すべて設定されます。

于 2011-05-31T18:01:47.310 に答える
1

InputStreamReaderを使用すると、UTF-16ELをメモリにロードできます。その後、必要なすべての文字列操作を実行できます。次に、 OutputStreamWriterを使用してASCII形式で保存できます。CharSetを使用してフォーマットを選択します。

于 2011-05-31T18:13:23.207 に答える
0

ちょうど解決策を見つけました。

http://www.fileformat.info/convert/text/utf2utf.htm

エンコーディング間でアップロードおよび変換できます。

私のファイルは700MB以上なので、これは永続的な解決策ではありません。だから私は他の人によって投稿されたいくつかの解決策を試してみます。

この小さなソフトウェアは次のことに役立ちます。

http://www.kalytta.com/tools.php

于 2011-05-31T18:50:38.103 に答える