マルチバイト文字とワイド文字Ⅱ

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

マルチバイト文字とワイド文字Ⅱ

投稿記事 by MoNoQLoREATOR » 12年前

とりあえず言葉の定義を調べて、次のように解釈しました。

文字セット…『シングルバイト文字セット(1byte),ダブルバイト文字セット/ワイド文字セット(2byte),多バイト文字セット等、何byteで文字を表すかを示す』
文字コード…『Shift-JIS,ASCII,Unicode等、規格化されたコード表のことを指す』
文字エンコーディング…『文字コードの並べ方を定めたもの』

ちなみにVisualStudioの設定って、結局はA系のAPIを使うのかW系のAPIを使うのかを指定しているだけに過ぎないのですよね?
だったら「マルチバイト文字セットを使用する」「Unicode文字セットを使用する」なんていう回りくどい言い方ではなく素直に「A系のAPIを使用する」「W系のAPIを使用する」という言い方をすれば良いのではないかと…。



あれから相当な日数が経ってしまいましたが、実はあの後すぐに調べ物をして上の文章を書きました。
…で、VisualStudio限定にするか否かをいつまでも悩んでいまして…。
結果、とりあえず今のところはVisualStudio限定ということにしました。
ちなみに、おそらく「文字コードはひとつのプロジェクト上で統一されているであろう」という方針でやってゆくという結論も出しました。
現在のソースコードはこんな感じですが動作テストはまだ行っておりません。

アバター
tk-xleader
記事: 158
登録日時: 14年前

Re: マルチバイト文字とワイド文字Ⅱ

投稿記事 by tk-xleader » 12年前

もはやマルチバイト設定で新規プロジェクトを作る意味はほとんど無いといえます。もはやXPのサポート切れが秒読み段階に入っているくらいですから、Unicodeに対応していない9x系に関しては切り捨てても問題はないかと…

ISLe
記事: 2650
登録日時: 14年前

Re: マルチバイト文字とワイド文字Ⅱ

投稿記事 by ISLe » 12年前

Visual C++のIDEでウィンドウズアプリを作るとは限らないのです。
マルチバイト文字セットが無くなったらクロス開発のひとはとても困ると思います。
最後に編集したユーザー ISLe on 2013年6月02日(日) 16:38 [ 編集 1 回目 ]

naohiro19
記事: 256
登録日時: 14年前

Re: マルチバイト文字とワイド文字Ⅱ

投稿記事 by naohiro19 » 12年前

.NET Framework のStringクラスはワイド文字列を使うようになってます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前

Re: マルチバイト文字とワイド文字Ⅱ

投稿記事 by softya(ソフト屋) » 12年前

ユーザーが扱うファイルはUTF-8やSJISがありえるのでライブラリとして排除するのは危険では?
何処までの汎用性かと言う限定が必要です。

内部がUNICODEで外部ファイルはUTF-8やSJISっては十分にありえます。

YuO
記事: 947
登録日時: 14年前

Re: マルチバイト文字とワイド文字Ⅱ

投稿記事 by YuO » 12年前

MoNoQLoREATOR さんが書きました:文字セット…『シングルバイト文字セット(1byte),ダブルバイト文字セット/ワイド文字セット(2byte),多バイト文字セット等、何byteで文字を表すかを示す』
文字コード…『Shift-JIS,ASCII,Unicode等、規格化されたコード表のことを指す』
文字エンコーディング…『文字コードの並べ方を定めたもの』
文字セットというと文字集合 (Character Set) の方なので,本来の意味から言うと文字を集めた物そのものですね。
ISO-646, US-ASCII, ISO-10646-1, Unicode, JIS X 0201, etc.や,常用漢字表なども含めることが出来ます。
符号化文字集合 (Coded Character Set) であれば,常用漢字表などは除外になります。
で,符号化の話をしている場合,文字集合をCCSの別名として使うことがよくあります。
# 単純な文字集合をPCで取り扱うことはできないから。

次に,Unicodeでは文字符号化形式 (Character Encoding Form) という内部表現用の数値列を定義しています。
UTF-8, UTF-16, UTF-32がこれにあたります。csEUCFixWidJapaneseなんかも,これに相当します。
で,CCSまたはCEFの各文字をオクテット列にするための方法が文字符号化方式 (Character Encoding Scheme) です。
MoNoQLoREATORさんが挙げた中で文字エンコーディングがこれにあたり,US-ASCII, Shift_JIS, EUC-JP, UTF-8, UTF-16LE/UTF-16BEなどになります。

最後に,文字コード (Character Code) は,CES中での各文字のオクテット列またはCESそのものを指します。

ただ,標準等によって言葉が細かく異なるため,別の定義による言葉を使っていることもあると思います。