ヘッダー
Visual Basic サンプル集
 

文字コードから文字を取得する

2022/8/21

→ C# のサンプルに切り替える → Python のサンプルに切り替える

 

Unicode の文字コード(コードポイント) 29E3D の文字を取得する

VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

Dim st As String = System.Text.Encoding.UTF32.GetString(BitConverter.GetBytes(&H29E3D))

Debug.WriteLine(st) '𩸽

Debug.WriteLineが表示される場所

 

これでもできます。

VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

Dim st As String = Char.ConvertFromUtf32(&H29E3D)

Debug.WriteLine(st) '𩸽

Debug.WriteLineが表示される場所

メモ:Char.ConvertFromUtf32 で コードポイント D800 ~ DFFF を指定するとArgumentOutOfRangeExceptionの例外になります。この範囲はサロゲート領域で、単独では文字は割り当てられていません。

 

これでもできます。

VB2019対応 Visual Studio 2022

Dim rune As New System.Text.Rune(&H29E3D)
Dim st As String = rune.ToString

Debug.WriteLine(st) '𩸽

Debug.WriteLineが表示される場所

メモ:Runeのコンストラクターでコードポイント D800 ~ DFFF を指定するとArgumentOutOfRangeExceptionの例外になります。この範囲はサロゲート領域で、単独では文字は割り当てられていません。

 

 

Shift_JISの文字コード 88C0 の文字を取得する

 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

#If NETCOREAPP Then
    System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)
#End If

Dim code As Integer = &H88C0

Dim sjis = System.Text.Encoding.GetEncoding("shift_jis")
Dim st As String = sjis.GetString(BitConverter.GetBytes(code).Reverse.ToArray).Last

Debug.WriteLine(st) '安

Debug.WriteLineが表示される場所

 

 

参考:Unicodeのコードポイントから文字を取得する方法の比較

方法 評価
(※1)
変換可能な範囲
(※2)
備考
Encoding.UTF32.GetString A すべて
(0000 ~ 10FFFF)
複数の文字を変換可能
Char.ConvertFromUtf32 B 0000 ~ D7FF
E000 ~ 10FFFF
 
Runeのコンストラクター B 0000 ~ D7FF
E000 ~ 10FFFF
2019年に追加された新機能
ChrW C 0000 ~ D7FF
E000 ~ FFFF
可能な場合、定数として扱われます。
Convert.ToChar C 0000 ~ D7FF
E000 ~ FFFF
 
Chr D 0000 ~ 00FF 現在のコードページによって変換不可能な文字あり

※1:評価の目安

A: これを使っておけばよいと思います。よくわからない人はこれを使いましょう。

B: これでも問題ないです。D800~DFFFを変換しようとすると例外になりますが、この範囲には通常の文字は割り当てられていないので、例外が発生する方がむしろ親切なときもあります。

C: 役に立つときもありますが、使用に注意が必要なので手を出さない方が無難です。Unicodeの基本多言語面しか対応していないので、一部の絵文字やかなり難しい一部の漢字など対応していない文字があります。

D: お勧めしません。

※2:Unicodeのコードポイント。16進数で表記しています。

 


VB6対応 VB6では Chr や ChrW などを使用します。Unicode への対応はかなり面倒なはずです。