C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.93888 の関連記事表示

<< 0 >>
■93888  Re[1]: UTF-8の全角文字読み込み
□投稿者/ 魔界の仮面弁士 -(2020/02/17(Mon) 11:10:29)
    No93883 (tani さん) に返信
    > これはなぜなのでしょうか?
    
    C# では、文字集合として Unicode をベースにしていますが、
    その符号化方式は UTF-8 ではありません。
    
    
    Windows が使う Unicode では、エンコードとして UCS-2 あるいは UTF-16 をベースとしています。
    これは細かい事を端折っていえば、すべての文字が 2 バイト(16bit) で表されるエンコーディングであり、
    .NET の System.String や System.Char もコレです。
    
    
    
    using System;
    using System.Diagnostics;
    using System.Globalization;
    using System.Text;
    
    class Program
    {
        static void Main()
        {
            // 'U+0000〜U+007F の範囲の文字は、UTF-8 では 1 バイトとなる
            WriteStringLength("\u0043");
            WriteStringLength("\u0023");
            Debug.WriteLine("");
    
            // 'U+0080〜U+07FF の範囲の文字は、UTF-8 では 2 バイトとなる
            WriteStringLength("\u03B2");
            WriteStringLength("\u0414");
            Debug.WriteLine("");
    
            // 'U+0800〜U+FFFF の範囲の文字は、UTF-8 では 3 バイトとなる
            WriteStringLength("\u3042");
            WriteStringLength("\u4f60");
            WriteStringLength("\uFF8F");
            Debug.WriteLine("");
    
            // 'U+10000〜U+1FFFF の範囲の文字は、UTF-8 では 4 バイトとなる
            WriteStringLength("\U0001F60A");
            WriteStringLength("\U00020BB7");
            WriteStringLength("\U00020B9F");
            Debug.WriteLine("");
        }
    
        static void WriteStringLength(string s)
        {
            Debug.WriteLine(String.Format(
                "文字=[{0}], 文字数={1}, Char数={2}、UTF-8={3}, UTF-16={4}",
                s,
                new StringInfo(s).LengthInTextElements,
                s.ToCharArray().Length,
                Encoding.GetEncoding("UTF-8").GetByteCount(s),
                Encoding.GetEncoding("UTF-16").GetByteCount(s)
            ));
        }
    }
    
記事No.93883 のレス /過去ログ162より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -