昔・・・地上波デジタル放送が始まる前位に、その電波をチェックする装置の字幕を出す部分を担当したことがあります・・・。描画が遅くて使い物にならなかったっぽいんだけど・・・(;´Д`)
その時も文字コードで苦しんだのですよ。理解できなくて。RFCじゃねーしなんだっけな? なんかルールがあったんですわ。
だいたい受信した文字列(数字)から文字に変換ってわけわからんよね!!
さて、時は移り、今私を苦しめるのはEXCELの文字コードでやんす(´;ω;`)ウゥゥ
パーフェクトExcelVBAのp.261辺りを我流でやってるんです。stringsモジュールの関数を一通りチェックしようと思いまして・・・。
英語シートと日本語シートに分けて関数とその結果をセルに入力していきました。
StrConvの文字コード変換で分からんくなる。
StrConv 関数 (Visual Basic for Applications) | Microsoft Docs
vbUnicode 64 システムの既定のコードページを使用して、文字列をUnicodeに変換します。 (Macintosh では使用できません。) vbFromUnicode 128 文字列を Unicode からシステムの既定のコードページに変換します。 (Macintosh では使用できません。)
私は「A1」に入っているのが「SJIS」で「既定の文字コード」だと思っていたんですね。
こうなるはずだと思ったのに文字が化けてしまう・・・。はにゃ?
教えて偉い人(すぐ人に聞くw)いつもすみません。ありがとうございます。
セルの値=Unicode
— ことりちゅん@えくせるちゅんちゅん (@KotorinChunChun) 2020年5月25日
vbUnicode:値をシステム既定コードとして解釈しUnicodeに変換
vbFromUnicode:値をUnicodeとして解釈して、システム既定コードに変換
順番が逆なら矛盾しないんだけど、記載されてる順序だと最初の変換で文字データをぶっ壊してるので、元に戻らなくなるのはしょうがないと思う。
A1の値がUnicodeだった!! じゃ、エクセルの既定の文字コードってのがUnicodeなのかい?
というわけで混乱する。
入れ子にしなかった場合です。
— elve (@elve_hatena) 2020年5月25日
A1に入ってる文字列がunicodeなら変換しても変わらないで欲しかったなぁと思ったのですが・・・(;´Д`) pic.twitter.com/H7VgOSWRlK
システムの既定のコードがSJISということで納得できた。
しかし・・・既定のコードページってなんなのさ・・・。
たどり着いたページがやたら乱暴な口調で哀しくなった。バカですみません(´;ω;`)ウゥゥ
www.mermaid-tavern.com
システムってのがEXCELじゃなくてOSってことやね。だからマッキントッシュでは使えませんよってのね。うーむ。わからんけどもワカタことにする!!