/// <summary>
        /// Hnc8様のReadJEncを使用して文字コードの判別をする。
        /// </summary>
        public static Encoding JudgeFileEncoding(string path)         //2020.05.08 Mr-Ojii Hnc8様のReadJEncを使用して文字コードの判別をする。
        {
            if (!File.Exists(path))
            {
                return(null);
            }
            Encoding enc;
            FileInfo file = new FileInfo(path);

            using (Hnx8.ReadJEnc.FileReader reader = new Hnx8.ReadJEnc.FileReader(file))
            {
                // 判別読み出し実行。判別結果はReadメソッドの戻り値で把握できます
                Hnx8.ReadJEnc.CharCode c = reader.Read(file);
                // 戻り値のNameプロパティから文字コード名を取得できます
                string name = c.Name;
                Console.WriteLine("【" + name + "】" + file.Name);
                // GetEncoding()を呼び出すと、エンコーディングを取得できます
                enc = c.GetEncoding();
            }
            Debug.Print(path + " Encoding=" + enc.CodePage);

            if (enc == null)
            {
                enc = Encoding.GetEncoding(932);
            }
            return(enc);
        }
Пример #2
0
        /// <summary>
        /// ファイルを開いて全文を取得する。
        /// </summary>
        /// <param name="strFilePath">開くファイルのパス</param>
        /// <param name="strReturn">ファイルの内容を返す</param>
        /// <returns>ファイルを開いて内容を取得できたか否か</returns>
        public bool loadFileAll(string strFilePath, out string strReturn)
        {
            strReturn = null;
            try
            {
                //Fileがあるかチェック。
                FileInfo fInfo = new FileInfo(strFilePath);
                if (!fInfo.Exists)
                {
                    return(false);
                }

                using (Hnx8.ReadJEnc.FileReader reader = new Hnx8.ReadJEnc.FileReader(fInfo))
                {
                    // 判別読み出し実行。判別結果はReadメソッドの戻り値で把握できます
                    Hnx8.ReadJEnc.CharCode c = reader.Read(fInfo);
                    // 戻り値のNameプロパティから文字コード名を取得できます
                    string name = c.Name;
                    // GetEncoding()を呼び出すと、エンコーディングを取得できます
                    System.Text.Encoding enc = c.GetEncoding();
                    // 実際に読み出したテキストは、Textプロパティから取得できます
                    // ※非テキストファイルの場合は、nullが設定されます
                    strReturn = reader.Text;
                }
            }
            catch (ArgumentException e)
            {
                MessageBox.Show("LoadFileAll Error:01\n" + e.ToString());
                return(false);
            }
            return(true);
        }
Пример #3
0
        private void readCSV()
        {
            Byte[] data = new Byte[FileUpload1.PostedFile.ContentLength];
            FileUpload1.PostedFile.InputStream.Read(data, 0, FileUpload1.PostedFile.ContentLength);

            // System.Text.Encoding enc = GetCode(data);
            String str = null;

            Hnx8.ReadJEnc.CharCode charCode = Hnx8.ReadJEnc.ReadJEnc.JP.GetEncoding(data, data.Length, out str);

            String strData = "";

            // strData = System.Text.Encoding.GetEncoding("utf-8").GetString(data);
            strData = charCode.GetEncoding().GetString(data);
            ArrayList list = CsvToArrayList1(strData);

            for (int i = 0; i < list.Count; i++)
            {
                ArrayList row = (ArrayList)list[i];
                if (row.Count == 10)
                {
                    var cmd = new OracleCommand(strInsSQL);
                    cmd.Connection = con;

                    cmd.BindByName = true;
                    OracleParameter nendo = new OracleParameter("NENDO", OracleDbType.Varchar2);
                    nendo.Direction = ParameterDirection.Input;
                    nendo.Value     = (String)row[0];
                    cmd.Parameters.Add(nendo);
                    OracleParameter genre = new OracleParameter("GENRE", OracleDbType.Varchar2);
                    genre.Direction = ParameterDirection.Input;
                    genre.Value     = (String)row[1];
                    cmd.Parameters.Add(genre);
                    OracleParameter hyoka = new OracleParameter("HYOKA_NUM", OracleDbType.Int32);
                    hyoka.Direction = ParameterDirection.Input;
                    hyoka.Value     = Int32.Parse((String)row[2]);
                    cmd.Parameters.Add(hyoka);
                    cmd.Parameters.Add(new OracleParameter("KYOKU_NAME", OracleDbType.Varchar2, (String)row[3], ParameterDirection.Input));
                    cmd.Parameters.Add(new OracleParameter("AUTHOR_NAME", OracleDbType.Varchar2, (String)row[4], ParameterDirection.Input));
                    cmd.Parameters.Add(new OracleParameter("HOUR", OracleDbType.Int32, Int32.Parse((String)row[5]), ParameterDirection.Input));
                    cmd.Parameters.Add(new OracleParameter("MINUTE", OracleDbType.Int32, Int32.Parse((String)row[6]), ParameterDirection.Input));
                    cmd.Parameters.Add(new OracleParameter("SECOND", OracleDbType.Int32, Int32.Parse((String)row[7]), ParameterDirection.Input));
                    cmd.Parameters.Add(new OracleParameter("MEMBER", OracleDbType.Int32, Int32.Parse((String)row[8]), ParameterDirection.Input));
                    cmd.Parameters.Add(new OracleParameter("FILE_SIZE", OracleDbType.Int32, Int32.Parse((String)row[9]), ParameterDirection.Input));

                    cmd.ExecuteNonQuery();
                    //cmd.Transaction.Commit();
                }
                else
                {
                    Label1.Text = "CSVファイルの形式が違います。";
                    return;
                }
            }
        }
        /// <summary>
        /// 指定されたページのHTMLソースを取得する
        /// </summary>
        /// <param name="uri">URL文字列</param>
        /// <returns>HTMLソース文字列</returns>
        public static async Task <string> GetSource(string uri)
        {
            string result = string.Empty;

            using (var client = new HttpClient())
            {
                // ユーザーエージェント(Firefox v60のものを指定)
                client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0");

                // その他オプション
                client.DefaultRequestHeaders.Add("Accept-Language", "ja-JP");
                client.Timeout = TimeSpan.FromSeconds(60d);

                // 読込み
                // GET
                // HttpResponseMessage res = await client.GetAsync(uri);

                // POST
                var param = new Hashtable();
                param["foo"] = 8888;
                param["bar"] = "hoge";
                var serializer = new JavaScriptSerializer();
                var content    = new StringContent(serializer.Serialize(param));
                using (HttpResponseMessage res = await client.PostAsync(uri, content))
                {
                    try
                    {
                        // ページ読込み時にエラーが発生した場合、例外を発生させる
                        res.EnsureSuccessStatusCode();

                        Encoding enc = await DetermineEncodingAsync(res);

                        // URLが固定の場合は予め適する文字エンコードを指定しておき高速化
                        // Encoding.GetEncoding("shift_jis") / Encoding.GetEncoding(65001) / Encoding.UTF8 ...

                        if (enc != null)
                        {
                            // 文字エンコードが既知の場合
                            using (var stream = (await res.Content.ReadAsStreamAsync()))
                                using (var reader = (new StreamReader(stream, enc, true)) as TextReader)
                                {
                                    // HTMLソースを文字列として返す
                                    result = await reader.ReadToEndAsync();
                                }
                        }
                        else
                        {
                            // 文字エンコードが未知の場合
                            byte[] byteData = await client.GetByteArrayAsync(uri);

                            if (byteData != null)
                            {
                                // ReadJEncを使用して文字エンコードを判定する
                                Hnx8.ReadJEnc.CharCode charCode = Hnx8.ReadJEnc.ReadJEnc.JP.GetEncoding(byteData, byteData.Length, out result);
                            }
                        }
                    }
                    catch (HttpRequestException)
                    {
                        if (res.StatusCode == HttpStatusCode.NotFound)
                        {
                            Console.WriteLine("Page Not Found");
                        }
                    }
                }
            }

            return(result);
        }