Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
固定長文字列より指定位置の文字を取得
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30516#CommentId84093
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2020/7/28 16:47:35
> Skip(50).Take(10)
UTF-8 とは異なり、Shift_JIS は文字列の途中からだと、
それが全角文字の前半部なのか後半部なのかを調べられないので、
バイナリに対して、この方法で切り出すのは危険だと思います。
たとえば、51 バイト目が「全角文字の後半部」だった場合に、
それを誤って「全角文字の前半部」として扱われる可能性がありえますが、
その場合先頭文字だけでなく、そのあとに続く文字も化けてしまう恐れがあります。
【区切り位置を誤認しやすい文字列の例】
"=" は Shift_JIS で 0x8181
"≠" は Shift_JIS で 0x8182
"a" は Shift_JIS で 0x8281
"b" は Shift_JIS で 0x8282
面倒でも、Shift_JIS 文字列の先頭から、文字数(Char あるいは Rune 単位)で
一文字ずつ拾い出していくなどして、半角なら +1、全角なら +2 として
カウントしていく方が良いかも知れません。