質問するログイン新規登録

Q&A

解決済

1回答

501閲覧

Google ColabでC#を実行すると意図しない文字が出てくる

suzu13

総合スコア1

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2026/09/18 09:48

0

0

実現したいこと

出力に意図した文字だけ表示するようにしたい。

前提

Google Colaboratoryで実行できる主な言語と環境構築方法まとめ
Ubuntu .NET SDK または .NET Runtime をインストールする
上記の記事を元にgoogle colabでc#を実行できる環境を作ったのですが、実行すると
自分の書いたコードの結果以外に、文字化けのようなもの(豆腐?)と「=」が一緒に
実行結果に出てきます。

発生している問題・エラーメッセージ

==Hello, World. =

該当のソースコード

C#

1%%writefile Program.cs 2 3Console.WriteLine("Hello, World.");

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

回答1件

0

ベストアンサー

Google ColabでC#を実行したときに「=」や文字化け(豆腐)が出るやつね。
原因はColab側が出力に付けちゃう制御シーケンス(ANSIエスケープとかプロンプト記号)なんだ。
dotnet run や dotnet script がターミナル向けに色付けや制御文字を出しちゃうから、
Colabのノートブック出力欄だとそれが正しく解釈されずに「=」や□として表示されちゃうのよ。

対処法はこんな感じ。

  1. 環境変数でANSI出力を無効化する
    セルの最初にこれを実行してからC#を走らせてね。

import os
os.environ["DOTNET_CLI_TELEMETRY_OPTOUT"] = "1"
os.environ["DOTNET_NOLOGO"] = "1"
os.environ["TERM"] = "dumb"

TERM=dumb にすると、dotnetが色とか制御シーケンスを出さなくなるよ。

  1. 出力をリダイレクトして余計な文字を除去
    dotnet run の出力をそのまま表示しないで、Python側で受け取って整形する感じ。

import subprocess
result = subprocess.run(
["dotnet", "run", "--project", "."],
capture_output=True, text=True, env={**os.environ, "TERM": "dumb"}
)
import re
clean = re.sub(r"\x1b[[0-9;]*[A-Za-z]", "", result.stdout)
print(clean)

  1. Console.OutputEncoding を明示する
    文字化け(豆腐)がUnicode由来なら、Program.csの先頭にこれを追加してね。

Console.OutputEncoding = System.Text.Encoding.UTF8;
Console.WriteLine("Hello, World.");

  1. それでも「=」が残る場合
    「=」はdotnetのビルド進捗やプロンプトがColabの出力欄で崩れたものだから、
    --nologo と -v q(quiet)を付けてビルドメッセージを抑制してね。

!dotnet run --nologo -v q

補足
根本原因は「Colabの出力セルがTTYじゃないのに、dotnetがTTY向けの装飾を出している」こと。
上の TERM=dumb + 出力キャプチャの組み合わせで、Hello, World. だけが表示されるようになるよ。

●●●●

投稿2026/09/28 08:38

dejo120798

総合スコア25

suzu13

2026/09/30 10:20

分かりやすい原因の解説に複数の解決方法の提示等、大変丁寧に教えていただきありがとうございます! 別々のノートブックで試してみたところ、「ANSI出力を無効化」と「余計な文字を除去」のどちらの方法でも解決することが出来ました。 改めて回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.25%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問