- - PR -
C#1の文字列について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-09-27 12:41
こんにちは。
現在C# & utf-8で文字列のバイト数から、改行を含める処理をしています。 全角文字20文字で改行を入れたいのですが、ここの過去ログから見ると 一度Shift-JISに変換して、バイトチェックをした方がいいのでしょうか? (S-JISは全角:2バイト、半角:1バイトと判断する為) UTF-8で今そのままバイト数から桁数チェックをしているのですが、 全角は3バイト扱いになっています(全て3倍となら計算もできるのですが・・)。 お分かりになりましたらよろしくお願いします。 | ||||
|
投稿日時: 2008-09-27 13:19
バイト数と文字数は、同じではありません。「UTF-8で全角20文字」というとき、「全角」とは何を基準に「全角」といっているのでしょう?UTF-8ですから、ウェブでの出力だと思います。出力先のフォントは、固定ピッチであることが保証されているのでしょうか?(デザイナーの指定より、ユーザーの指定の方が優先されます。)
また、文字コードを変えると、変換できない文字も出てきます。そういう文字は、どう扱うのでしょう? どの様なケースで、どの様な出力をしようとしているのでしょう。場合によって、最適解は他にあるかもしれません。 | ||||
|
投稿日時: 2008-09-27 14:59
それでいい場合もあるし、それじゃダメな時もあります。 utf-8 で与えられる文字列が、意図したとおりに Shift-JIS に変換される文字だけで構成されているなら、期待どおりの結果が得られるでしょう。 ですが、そうでない場合どうするかについては特にコレといった取り決めがあるわけではないので、自分で決めるしかありません。 |
1