1

エンコードされているかなりの数のCSVファイルを.NET経由でUTF-8にバッチ変換しようとしています

これまで私が行ってきたのは、csvファイルを1つずつ開き、[名前を付けて保存/形式の種類]ドロップダウンボックスから[すべてのファイル]を選択し、その下のドロップダウンボックスから[UTF-8]としてエンコードを再度選択することです。次に、それを保存します(ただし、元のファイルを置き換えるようには求められません)。

この手順は非常に面倒なので、vb.NETで小さなアプリを作成したいと思います。

私が思いついたのはこれだけです:System.Text.Encoding.Convert(System.Text.Encoding.ASCII,System.Text.Encoding.UTF-8)

しかし、それはエラーを作成します:(

助言がありますか?どうも

更新:メモ帳を使用する代わりに.NETの内部lib / funcsを使用するように質問を更新しました:D

4

3 に答える 3

0

DirectoryInfoディレクトリ内のファイルを列挙する方法を見てください。

次に、エンコーディングを変換するために簡単に使用できる便利な方法を見File.ReadAllText()てください。File.WriteAllText()

ファイルの先頭に署名のないUTF-8(U + FEFF)が必要な場合は、でエンコーディングを作成する必要があることに注意してください。

var encoding = new UTF8Encoding(false);
于 2012-04-25T06:18:33.297 に答える
0

これがワンショットの場合は、PowerShellを起動します。

gci *.csv | %{ Get-Content $_ | Set-Content -Encoding UTF8 "$($_.BaseName)_Encoded.csv" }

gci * .csv:現在のディレクトリ内のすべてのcsvファイルを取得し、結果を「foreach」ループにパイプします(%)Get-Content各ファイルの結果をSet-Contentにパイプします。Set-ContentはUTF8変換を実行し、結果をに格納します。同じベース名を持ち、「_Encoded」で後置されたファイル。

于 2012-04-25T06:30:21.160 に答える
0

これを試してください: Mozillaの文字セット検出器またはその.NETポート
または
ここでは、人々がそれを行った他の方法を見つけることができます。

編集: またはこれを適応/使用する

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


public partial class Converting : System.Web.UI.Page

{ 
    protected void Page_Load(object sender, EventArgs e)

    { 


        string sourceDir = "C:\\test";

        string newDir = "C:\\test2";

        foreach (String sourceFile in System.IO.Directory.GetFiles(sourceDir))

        { 
            char[] splitter = { '\\' };



            String[] str = sourceFile.Split(splitter); 
            String fname = str[str.Length - 1]; 


            FileStream fs = new FileStream(sourceFile, FileMode.Open, FileAccess.ReadWrite);

            StreamReader ReadFile = new StreamReader(fs, System.Text.Encoding.ASCII);

            FileStream fs1 = new FileStream(newDir + 
"\\new_" + fname, FileMode.OpenOrCreate, FileAccess.Write); 
            StreamWriter WriteFile = new StreamWriter(fs1, System.Text.Encoding.UTF8);

            String strLine; 
            while (ReadFile != null)

            { 
                strLine = ReadFile.ReadLine(); 
                //MessageBox.Show(strLine); 
                if (strLine != null) 
                { 
                    WriteFile.WriteLine(strLine); 
                } 
                else 
                { 
                    ReadFile.Close(); 
                    ReadFile = null; 
                    WriteFile.Close(); 
                } 
            } 
        } 
    } 
}
于 2012-04-25T06:34:08.950 に答える