LoginSignup
2
2

More than 3 years have passed since last update.

Microsoft TeamsのチャットログのテキストをクリップボードにコピーしてHTML Format形式の文字列として読み取ろうとしたら文字化けした件

Last updated at Posted at 2020-10-31

おそらくTeamsに限った現象ではなさげ。

まえがき

Teamsのチャット内容とかを他の管理台帳とかに手軽にコピーしたいと思い、色々調べ始めてみたところ、いきなりつまづいた。

チャットログに貼られたテキストをコピーすると・・・

image.png
のテキスト「ほげ」をコピーして、以前作ったツールを使ってクリップボードの保存形式を調べると・・・
image.png
ここまでは、まともです。

で、HTML Formatを選んで保存します。すると、、、(下記に抜粋)
image.png

文字化けしてますね。。

原因は謎だが対処法はあるようで・・・

参考サイトの1と2に、対処法が記載されています。
"Html Format"を指定して、GetDataすると大丈夫なようです。
"HTML Format"では文字化けします。謎すぎ・・・。

サンプルソースコード


using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;

class SampleForm : Form
{
    SampleForm()
    {
        ClientSize = new Size(300, 200);

        var btn = new Button(){
            Text = "Copy and save clipborad data as HTML Format.",
            Dock = DockStyle.Fill,
        };
        btn.Click += (s,e)=>{CopyAndSaveHtmlFromClipboard();};
        Controls.Add(btn);
    }

    void CopyAndSaveHtmlFromClipboard()
    {
        var ms = Clipboard.GetData("Html Format") as MemoryStream;

        if ( ms != null ) {
            using ( var fs = new FileStream("clipboard_tmpout_html.txt", FileMode.Create) ) {
                ms.WriteTo(fs);
            }

            Console.WriteLine("saved.");
        }
        else {
            Console.WriteLine("no data.");
        }
    }

    [STAThread]
    static void Main(string[] args)
    {
        Application.Run(new SampleForm());
    }
}

結果

上記のサンプルコードで保存したファイルを開くと、文字化けが解消することを確認できました。
image.png

参考サイト

  1. Clipboard.GetData(DataFormats.Html)で文字化け:Gushwell's Dev Notes
  2. のぶろぐ クリップボードのHTMLをテキストにしてみる。
  3. UTF-8からSJISに文字化けすると糸偏の漢字がよく出てくる - Qiita
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2