追記20240903 現行のC# 12では$"""..."""
形式で複数行の文字列補間を使用できます。このリテラル?はFormattableString
型のオブジェクトとして使いまわせるので、静的関数の実装も不要です。
各種エンコーディング(ASCIIエンコーディング、Unicodeエンコーディング、言語設定により指定されたシステムのANSIエンコーディング)の概要とそれを取得するサンプルコードです。
出力例
ASCIIエンコーディング CodePage: 20127 EncodingName: US-ASCII WebName: us-ascii HeaderName: us-ascii BodyName: us-ascii Unicodeエンコーディング CodePage: 1200 EncodingName: Unicode WebName: utf-16 HeaderName: utf-16 BodyName: utf-16 言語設定に依存するANSIエンコーディング CodePage: 932 EncodingName: 日本語 (シフト JIS) WebName: shift_jis HeaderName: iso-2022-jp BodyName: iso-2022-jp
サンプルコード
C# 9.0(トップレベルステートメント)
using System; using System.Globalization; using System.Text; // ASCIIエンコーディングの概要 ConsoleWriteCodePageSummary("ASCIIエンコーディング", Encoding.ASCII); // Unicodeエンコーディングの概要 ConsoleWriteCodePageSummary("Unicodeエンコーディング", Encoding.Unicode); // 言語設定に依存するANSIエンコーディングの概要 var ansiCodePage = CultureInfo.CurrentCulture.TextInfo.ANSICodePage; ConsoleWriteCodePageSummary("言語設定に依存するANSIエンコーディング", Encoding.GetEncoding(ansiCodePage)); static void ConsoleWriteCodePageSummary(string caption, Encoding encoding) { Console.WriteLine(caption); Console.WriteLine($"CodePage: {encoding.CodePage}"); Console.WriteLine($"EncodingName: {encoding.EncodingName}"); Console.WriteLine($"WebName: {encoding.WebName}"); Console.WriteLine($"HeaderName: {encoding.HeaderName}"); Console.WriteLine($"BodyName: {encoding.BodyName}"); Console.WriteLine(); }
C# 8.0
using System; using System.Globalization; using System.Text; class Program { static void Main() { // ASCIIエンコーディングの概要 ConsoleWriteCodePageSummary("ASCIIエンコーディング", Encoding.ASCII); // Unicodeエンコーディングの概要 ConsoleWriteCodePageSummary("Unicodeエンコーディング", Encoding.Unicode); // 言語設定に依存するANSIエンコーディングの概要 var ansiCodePage = CultureInfo.CurrentCulture.TextInfo.ANSICodePage; ConsoleWriteCodePageSummary("言語設定に依存するANSIエンコーディング", Encoding.GetEncoding(ansiCodePage)); } static void ConsoleWriteCodePageSummary(string caption, Encoding encoding) { Console.WriteLine(caption); Console.WriteLine($"CodePage: {encoding.CodePage}"); Console.WriteLine($"EncodingName: {encoding.EncodingName}"); Console.WriteLine($"WebName: {encoding.WebName}"); Console.WriteLine($"HeaderName: {encoding.HeaderName}"); Console.WriteLine($"BodyName: {encoding.BodyName}"); Console.WriteLine(); } }
2021/3/10:この記事は別のブログで投稿した記事を移動したものです。