- PR -

C#1の文字列について

1
投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-09-27 12:41
こんにちは。

現在C# & utf-8で文字列のバイト数から、改行を含める処理をしています。
全角文字20文字で改行を入れたいのですが、ここの過去ログから見ると
一度Shift-JISに変換して、バイトチェックをした方がいいのでしょうか?
(S-JISは全角:2バイト、半角:1バイトと判断する為)

UTF-8で今そのままバイト数から桁数チェックをしているのですが、
全角は3バイト扱いになっています(全て3倍となら計算もできるのですが・・)。

お分かりになりましたらよろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-09-27 13:19
バイト数と文字数は、同じではありません。「UTF-8で全角20文字」というとき、「全角」とは何を基準に「全角」といっているのでしょう?UTF-8ですから、ウェブでの出力だと思います。出力先のフォントは、固定ピッチであることが保証されているのでしょうか?(デザイナーの指定より、ユーザーの指定の方が優先されます。)

また、文字コードを変えると、変換できない文字も出てきます。そういう文字は、どう扱うのでしょう?


どの様なケースで、どの様な出力をしようとしているのでしょう。場合によって、最適解は他にあるかもしれません。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2008-09-27 14:59
引用:

一度Shift-JISに変換して、バイトチェックをした方がいいのでしょうか?
(S-JISは全角:2バイト、半角:1バイトと判断する為)



それでいい場合もあるし、それじゃダメな時もあります。

utf-8 で与えられる文字列が、意図したとおりに Shift-JIS に変換される文字だけで構成されているなら、期待どおりの結果が得られるでしょう。

ですが、そうでない場合どうするかについては特にコレといった取り決めがあるわけではないので、自分で決めるしかありません。
1

スキルアップ/キャリアアップ(JOB@IT)