2020年11月29日
川俣晶の縁側ソフトウェアC# コーディング How Tototal 1380 count

【入門級】コンソールに表示できない文字を表示可能にする (制約あり)

Written By: 川俣 晶連絡先

 ⅒という文字をコンソールに表示しようとしたら?になってしまいました。

 対策はあるでしょうか。

 あります。

 一般的なWindows環境では、コンソールは出力エンコーディングがコードページ932つまりシフトJISになっています。

 これをUTF-8に変更すれば扱えるようになります。

 それには、Console.OutputEncoding = System.Text.Encoding.UTF8;を実行します。

罠の数々 §

  • 実はConsole.OutputEncoding = System.Text.Encoding.UTF8;は全ての問題を解決してくれない。コンソールはサロゲートペアに対応していないので、番号が一定以上の文字は全て化ける。サンプルソースでは⅒は上手く行くが💜は上手く行かない
  • 💜に相当する文字列は、サロゲートペアに対応したアプリにコピペすると合体して1文字に戻る

参考リンク §

Console.OutputEncoding プロパティ

Console.InputEncoding プロパティ

 Console.OutputEncoding プロパティの初期値は何だったのだろうか。上記のリンクから正しい解釈を捜してみよう。

 実はコンソールのOutputの他にInputのエンコーディングを変更することができる。どういう時に変更するのだろうか。上記のリンクを辿って考えてみよう。

リポジトリ §

https://github.com/autumn009/cshowto

ConsoleEndoding §

using System;

class Program

{

    static void Main()

    {

        Console.WriteLine("⅒💜");

        Console.OutputEncoding = System.Text.Encoding.UTF8;

        Console.WriteLine("⅒💜");

    }

}

実行結果

???

⅒ ・・

Facebook

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?
キーワード【 川俣晶の縁側ソフトウェアC# コーディング How To
【C# コーディング How To】の次のコンテンツ
2020年
11月
30日
【入門級】オブジェクトが消滅するタイミングをイベントとして受け取りたい 【最終回】
3days 0 count
total 1271 count
【C# コーディング How To】の前のコンテンツ
2020年
11月
27日
【入門級】プログラムの終了時に音を出して知らせる
3days 0 count
total 1947 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20201129093737
サイトの表紙【C# コーディング How To】の表紙【C# コーディング How To】のコンテンツ全リスト 【C# コーディング How To】の入手全リスト 【C# コーディング How To】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.