2

SQL ServerからUnicodeテキストファイルとしてエクスポートされた大きな(〜18 GB)ファイルに直面しています。つまり、そのエンコーディングはUTF-16(リトルエンディアン)です。ファイルはLinuxを実行しているコンピューターに保存されていますが、UTF-8に変換する方法がわかりません。

最初はiconvを使ってみましたが、ファイルが大きすぎます。私の次のアプローチは、ファイルを1つずつ分割して変換することでしたが、それも機能しませんでした。変換中に多くのエラーが発生しました。

では、これをUTF-8に変換する方法について何かアイデアはありますか?どんな助けでも大歓迎です。

4

1 に答える 1

4

SQL サーバーを使用しているため、プラットフォームは Windows であると想定しています。最も単純なケースでは、ソースを 1 行ずつ読み取り、変換されたファイルをそのまま書き込むダーティ .NET アプリケーションをすばやく作成できます。このようなもの:

using System;
using System.IO;
using System.Text;

namespace UTFConv {
    class Program {
        static void Main(string[] args) {
            try {
                Encoding encSrc = Encoding.Unicode;
                Encoding encDst = Encoding.UTF8;
                uint lines = 0;
                using (StreamReader src = new StreamReader(args[0], encSrc)) {
                    using (StreamWriter dest = new StreamWriter(args[1], false, encDst)) {
                        string ln;
                        while ((ln = src.ReadLine()) != null) {
                            lines++;
                            dest.WriteLine(ln);
                        }
                    }
                }
                Console.WriteLine("Converted {0} lines", lines);
            } catch (Exception x) {
                Console.WriteLine("Problem converting the file: {0}", x.Message);
            }
        }
    }
}

Visual Studio を開き、新しい C# コンソール アプリケーション プロジェクトを開始し、このコードをそこに貼り付け、コンパイルして、コマンド ラインから実行するだけです。最初の引数はソース ファイルで、2 番目の引数は宛先ファイルです。動作するはずです。

于 2011-07-08T22:32:25.073 に答える