/// <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); }
/// <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); }
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); }