dポイントプレゼントキャンペーン実施中!

文字コード体系によっては、

'0'、'1'、・・・、'9'の値は一つづつ増えていくが、
'a'、'b'、・・・、'z'の値が一つづつ増える保証はない。

と聞きました。

英文字を大文字や小文字に変換する関数が成立するためには、少なくとも大文字と小文字の文字コードの整数値に規則性が必要だと思います。

ということは、文字コード体系が異なると、英文字a,b,c・・・は、一つづつ増える保証は無いが、大文字と小文字簡には共通する規則が保証されているということでしょうか?

ご存知の方お願いいたします。

A 回答 (3件)

> '0'、'1'、・・・、'9'の値は一つづつ増えていくが、


'a'、'b'、・・・、'z'の値が一つづつ増える保証はない。

この話では、よくEBCDICが例にあがります。参考URLのソフトで確認すると、アルファベットの並びが連続していない事がわかると思います。

>英文字を大文字や小文字に変換する関数が成立するためには、少なくとも大文字と小文字の文字コードの整数値に規則性が必要だと思います。

大文字と小文字の対応をテーブルとして持っていれば変換は可能です。

>文字コード体系が異なると、英文字a,b,c・・・は、一つづつ増える保証は無いが、大文字と小文字簡には共通する規則が保証されているということでしょうか?

英語版のEBCDICでは0x40だけずれているようですが、日本語では違うようです。というわけで、一般には保証はされていません。

参考URL:http://www.pleasuresky.co.jp/ebcdic.php3
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
大変良く分かりました。

ここからが本当に知りたいことなのです。質問におかしな記述があるかもしれませんがお許しください。

わたしが使用しているVC++6.0において、toupperという関数が有ります。この関数自体C言語で書かれています。


>英語版のEBCDICでは0x40だけずれているようですが、日
>本語では違うようです。というわけで、一般には保証は
>されていません
と言う事は、toupperを使用したプログラムは、常に作動が保証されている訳ではない。という事でしょうか?

お礼日時:2003/05/10 09:11

>と言う事は、toupperを使用したプログラムは、常に作動が保証されている訳ではない。

という事でしょうか?

おそらくtoupperはASCIIコード限定だと思います。

参考URL:http://www.microsoft.com/japan/msdn/library/defa …
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2003/05/10 18:01

一般的な文字コードsjis、unicode、EUCは1ずつ増えていくと思いますが


半角全角ともに。

unicodeなら半角全角とも固定2バイト
sjis、eucだと半角1バイト、全角2バイトということでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

質問が回りくどく、分かりにくかったと思いますが、知りたいのは、

大文字と小文字の差は、全てのコード体系にて32と決まっているか?

と言う事です。

再度、ご存知でしたらお願いします。

お礼日時:2003/05/10 08:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!