developer's diary

最近はc#のエントリが多いです

C# (dotnetcore) 異体字セレクタ(辻辻󠄀)、サロゲートペア文字(𠀋)、絵文字(💡)を扱ってみる。(Visual Studio for Mac環境)

日本語文字ってややこしいです。

「💡辻辻󠄀𠀋」なんて文字をc#で扱ってみました。

lengthが正しい文字数でないことをご確認ください。

Visual Studio for Mac環境だと文字化け

辻󠄀が文字化け

f:id:mitsugi-bb:20200915235117p:plain

Visual Studio Codeは惜しい

辻と辻󠄀の違いが分からない。

f:id:mitsugi-bb:20200915235250p:plain

ソース

using System;

namespace StringExample
{
    class Program
    {
        static void Main(string[] args)
        {
            String str1 = "test";
            Console.WriteLine(str1);
            Console.WriteLine(str1.Length);
            Console.WriteLine(str1.LengthInTextElements());

            String str2 = "日本語";
            Console.WriteLine("string:" + str2);
            Console.WriteLine("Length:" + str2.Length);
            Console.WriteLine("LengthInTextElements" + str2.LengthInTextElements());

            string str3 = "💡";
            Console.WriteLine("string:" + str3);
            Console.WriteLine("Length:" + str3.Length);
            Console.WriteLine("LengthInTextElements:" + str3.LengthInTextElements());

            string str4 = "辻";
            Console.WriteLine("string:" + str4);
            Console.WriteLine("Length:" + str4.Length);
            Console.WriteLine("LengthInTextElements:" + str4.LengthInTextElements());

            string str5 = "辻󠄀";
            Console.WriteLine("string:" + str5);
            Console.WriteLine("Length:" + str5.Length);
            Console.WriteLine("LengthInTextElements:" + str5.LengthInTextElements());

            string str6 = "𠀋";
            Console.WriteLine("string:" + str6);
            Console.WriteLine("Length:" + str6.Length);
            Console.WriteLine("LengthInTextElements:" + str6.LengthInTextElements());

        }
    }

    static class StringExtention
    {
        public static int LengthInTextElements(this string str)
        {
            return (new System.Globalization.StringInfo(str)).LengthInTextElements;
        }
    }
}

結果

コンソールには、異体字セレクタ(辻辻󠄀)、サロゲートペア文字(𠀋)、絵文字(💡)が正しく表示されている

f:id:mitsugi-bb:20200915234901p:plain
コンソールには正しく表示される

参考

サロゲートペア文字

ja.wikipedia.org

qiita.com

qiita.com

異体字セレクタ

ja.wikipedia.org