くろねこ自由気ままな日記

趣味の話題や忘備録(的な)情報のページ

ブログランキング・にほんブログ村へ

思い込みで大ハマり


おはようございます くろねこです

2026年1月18日(日)
穏やかな日曜日の朝です
午前11時の天候は晴れ、気温10℃、弱い北の風

風が冷たく日差しの無いところでは少し寒いです
この穏やかな日曜日、如何お過ごしですか?


今朝は7時前に起き、いろいろなことを済ませ
さきほど(自称)マシンルームに籠りました(笑)

さて、今回は開発に関するお話しです

署名

あるツールの開発案件でメールを送る機能があるのですが、ユーザから、Outlookの署名を自動で入れてほしいとの要望があったのです

メインの部分はほぼ完成の域になったので、後回しにしていた署名部分の実装をしようとして大ハマりしました

署名データの保存場所はすぐにわかり、プログラムで署名を読み込み、メール本文に追記したところ、見事に文字化けしてました

Outlookの署名データの保存先
%APPDATA%\\Microsoft\\Signatures

文字化けの状況をみた途端
「あっ!、UTF-8」なんだ!

ツールはExcel VBA (所謂、Excelマクロ)で開発しているので扱う文字コードShift-JISコードです

だから、署名データをShift-JISにコード変換して連結しなければなりません

変換処理の作成

ということで UTF-8Shift-JISの変換処理を作成することにしました

いろいろ調査し、コードを書き込み動作確認しました
しかし、結果は文字化けしたままです

試行錯誤、約2時間・・・
正しく変換できないことから

一旦、クールダウンし、違うアプローチしてみることに
そもそも、署名データはUTF-8で書かれているはどこにも記載がありません
そう、勝手にくろねこが文字化け状況で判断しただけです

ということで、署名データがどの文字コードで書かれているか確認することにしました
使ったツールは nkf というコマンドプロンプトで動作するツールです
詳細は、Vectorで「nkf.exe nkf32.dll Windows用」のキーワードで検索してください

ダウンロードし、署名ファイルをチェックしたところ
UTF-16 でした

そりゃあ、変換できないよね!

プログラムをUTF-16用に直し、実行したところ、
バッチリ署名データを読み込むことができました!

最初から、ちゃんと調べていれば、無駄な時間を費やすことなかったのにと
あとの祭りです
思い込みはダメですね💦

クールダウンから10分足らずで解決することができました

今回分かったことは署名ファイルはUTF-16で書かれていることでした

文字コードの詳細についてはものすごい量の説明になってしまいますので代表的なもののみ紹介します

UTF-8
Webシステムなどで標準的に使用されている文字コード

Shift-JIS
WindowsMS-DOSなど幅広く使用されている文字コード

EBCDIC
(これはおまけ)
大型汎用機(メインフレーム IBMとその互換機)で使用されている文字コード
くろねこが若き日に最初に触れた文字コードです

おわりに

思い込みは恐ろしいですね
過去に何度も失敗してきたにも関わらず、繰り返してしまいました
やはり初心に帰る 重要です!

初心を忘れずに!

それでは


くろねこ自由気ままな日記

www.kuronekofreedom.com

www.kuronekofreedom.com

 

 

ブログランキング・にほんブログ村へ
© 2020 くろねこ自由気ままな日記