掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
”你好”のバイト長を求めるには (ID:146517)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 中国語も2バイトとして扱い(算出し)たいのですが。 Hongliang さんも書かれていますが、その扱い方と言うのは、 どの「文字集合」と「文字コード」で算出した場合でしょうか? また日本語に限ってみても、JIS-2004 の対応を考えねばなりません。 たとえば: "a" の文字は、Shift_JIS/UTF-8/Big-5/GB2312 いずれも 1 バイト。 "β" の文字は、Shift_JIS/UTF-8/Big-5/GB2312 いずれも 2 バイト。 "好" の文字は、UTF-8 で 3 バイト、Shift_JIS/Big-5/GB2312 で 2 バイト。 ChrW(&H4F60)、いわゆる ニイハオ の {イ尓} は、 UTF-8 で 3 バイト、Big-5/GB2312 で 2 バイト、Shift_JIS では該当文字無し。 ChrW(&H3351)、いわゆる {リットル} は、 UTF-8 で 3 バイト、Shift_JIS で 2 バイト、Big-5/GB2312 で該当文字無し。 ホッケという魚を表す {魚+花} は、サロゲートペアが入って UTF-8 で 4 バイト、Shift_JIS/Big-5/GB2312 で該当文字無し。 ———という事になっています。 > 今まで日本語で運用していた関係上、 そのデータを、その後どのように使うのかを考慮してください。 入力されたデータを Shift_JIS で扱う処理系が控えているなら、 {イ尓}などの Shift_JIS の文字集合に無い文字は、弾かねばならないでしょう。 また、そのデータを UTF-8 や UTF-16 などで扱うのであれば、 日本語は 2 バイトでは無く、3 バイトになるはずです。 > そうなるとやはり、一文字ずつチェックするしかないのでしょうか? 扱えない文字を調べるためには、System.Text.Encoding.GetEncoding の引数に、 EncoderFallback/DecoderFallback を指定すれば OK です。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.