【C#】ファイル符号化フォーマットの取得とUTF-8-BOM符号化への変換

1259 ワード

1、ファイルコードフォーマットを取得する
        private static Encoding getEncoding( string filePath)
        {

            using (var reader = new StreamReader(filePath, Encoding.Default, true))
            {
                if (reader.Peek() >= 0) // you need this!
                    reader.Read();

                Encoding encoding = reader.CurrentEncoding;
                reader.Close();
                return encoding;
            }
        }

2,UTF-8-BOM符号化フォーマットに変換
(実測の結果、日本語に対して符号化フォーマットを変換すると文字化けし、ドイツ語は正常で、引き続き検討する必要がある)
        public static void changeFileEncodingToUTF8BOM(string filePath)
        {
            // getEncoding()
            Encoding oldEndcoding = getEncoding(filePath);


            // 
            string str = string.Empty;
            using (StreamReader sr = new StreamReader(filePath, oldEndcoding))
            {
                str = sr.ReadToEnd();
                sr.Close();
            }
            // UTF-8 BOM 
            Encoding newEncoding = new UTF8Encoding(true);
            using (StreamWriter sw = new StreamWriter(filePath, false, newEncoding ))
            {
                sw.Write(str);
                sw.Close();
            }        
        }