質問: strconvでunicodeに変換出来ない文字 エクセルのvbaで、strconv関数を使用して、文字列をunicodeに変換しようとしているのですが、特定の文字が変換できません。 解決方法をご存知の方は教えてください。 現象:strconv("マミムメモ",vbunicode)で変換すると、ムメモが文字化けしてしまう。 確認方法: msgbox strconv(strconv(inputbox("入力"), vbunicode), vbfromunicode) で、inputboxに"マミムメモ"を入力すると、メッセージボックスに"マミ???"と表示されてしまう。
回答: こんにちは。 ご質問文にあるとおりの用途なら、 > strconv("マミムメモ",vbunicode) これは unicode をさらに unicode へエンコードしているため文字化けします。 以下を実行すると分かります。 msgbox lenb(inputbox("入力", default:="マミムメモ1")) 結果は 12 を返します。「マミムメモ1」 は全角5文字+半角1文字の計 11 バイトですが、unicode は全角・半角ともに 2 バイトなので 6文字×2バイト = 12 ですね。inputbox からの入力は unicode です。 buf = strconv(buf, vbfromunicode) (中間処理) buf = strconv(buf, vbunicode) といった処理で文字化けするなら、コード全体を補足する必要があります。 > msgbox strconv(strconv(inputbox("入力"), vbunicode), vbfromunicode) 以上の理由で、これは使い方自体が間違えてますよ。