No.2ベストアンサー
- 回答日時:
zhN = System.Text.Encoding.GetEncoding("ShiftJIS").GetByteCount(moji)
と
zhN = System.Text.Encoding.GetEncoding(932).GetByteCount(moji)
と
zhN = System.Text.Encoding.Default.GetByteCount(moji)
は同じ意味です。
エンコーディング名"ShiftJIS"のIDが932番です。
1番上はエンコーディング名よりIDを取得し、IDから情報を取得します。
2番目はIDから情報を取得します。
3番目はデフォルト(初期設定時の選択言語が日本語であればShift-JIS)で使用されている情報を使用します。
取り出す手間がかからない分、下に行くにつれて速度が上がります。
さらに蛇足ですが、エンコーディングとはどの文字コード(エンコード)に対応付けするかを意味します。
文字コード表は見たことありますでしょうか?
ASCIIコード表あたりが見やすいので検索してみてください、イメージがつかめます。
コンピュータは、例ですが(1,1)は'a'、(1,2)は'b'といった具合に番地に文字が割り当てられている表を使用し、バイトデータを文字に置き換えています。
VBなどで使用されている文字コードはユニコードです。
ユニコードは最大4byteで一文字をあらわします、ShiftJISは最大2byteで文字をあらわします。
ユニコードでは"あ"は3byteですが、シフトジスでは2byteです。
別の文字コードにEUCがありますが、
EUCで半角文字の"ア"は2byteですが、シフトジスでは1byteとなります。
.NETFrameworkでは複数の文字コード表に対応しています、そのため、エンコードを指定してバイト数を取得する必要が出てきました。
No.1
- 回答日時:
Option Explicit On
Option Strict On
Option Compare Binary
Option Infer Off
Class Q4916265
Shared Sub Main()
'半角が1バイトで全角が2バイトかどうかは
'文字符号化方式にもよる(たとえばUTF-8では"あ"は3バイト。多分UTF-16では"a"も2バイト)なので厳密に言わないといけない。
'ここでは勝手にCP932を選んだ。
Dim str As String = "a"
If str.Length <> 1 Then
throw new System.IndexOutOfRangeException
End If
Dim enc1 As System.Text.Encoding = System.Text.Encoding.GetEncoding(932)
'本当は
'enc.EncoderFallbackやenc.DecoderFallbackも検討すべき。
System.Console.WriteLine(enc1.GetBytes(str).Length)
'というような形になるでしょう。
System.Console.ReadKey(True)
End Sub
End Class
この回答への補足
いろいろ調べた結果 下記のように zhN の右辺を変更することでうまくいきそうです。
moji が全角なら zhN は 2 , 半角なら 1 になります。
vb2008 express edition で確認しました。
dim moji as string
dim zhN as integer
zhN = System.Text.Encoding.GetEncoding("ShiftJIS").GetByteCount(moji)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Excel(エクセル) 【マクロ】フォルダを3つ、POモニター上に、決まった並べ方をしたい 4 2022/08/31 11:05
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- Excel(エクセル) 【マクロ】フォルダを2つのモニターの定位置に並べたい 2 2022/09/02 01:14
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Visual Basic(VBA) VBA シート上にドロップダウンリストを作り、予め指定値をセットしたいのですが 1 2023/03/25 15:15
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
StrConvでUnicodeに変換出来な...
-
EXCELのVBAでLenB関数について
-
ファイル名の一部削除について
-
VB.NET ListBox内の前方一致で...
-
CString型 全角半角を意識せず...
-
機種依存文字と特殊文字について
-
Access VBAの参照設定(DAO)につ...
-
【Excel VBA】セル内テキストの...
-
TextFieldParserの固定長桁数を...
-
ASC関数
-
VB6のテキストボックスに入力し...
-
VBからID3タグをいじる方法
-
アクセス ステータスバーの文...
-
一番右のスペース以降の文字列...
-
VBA 変数名に変数を使用したい。
-
VB.NETで1→A、2→B、26→Z、27→AA...
-
DataTableに特定のフィールドが...
-
日付と文字列を条件としてDLook...
-
手動または分散トランザクショ...
-
VB.NETの配列にExcelから読み込...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CString型 全角半角を意識せず...
-
EXCELのVBAでLenB関数について
-
ファイル名の一部削除について
-
文字列から、null値を除去する方法
-
TextFieldParserの固定長桁数を...
-
StrConvでUnicodeに変換出来な...
-
一番右のスペース以降の文字列...
-
VBScriptで半角カナと半角英数...
-
【Excel VBA】セル内テキストの...
-
アクセス ステータスバーの文...
-
「シフトJIS X 0213」形式の文...
-
WSTRINGとは?
-
エクセルで13,410円を数値の134...
-
VBからID3タグをいじる方法
-
VB6のテキストボックスに入力し...
-
HEX
-
指定バイト目を取り出すにはど...
-
C言語とWin32APIで全角かなの...
-
vb2008 MIDB関数
-
ASC関数
おすすめ情報