- ベストアンサー
英大文字、小文字の変換について
文字コード体系によっては、 '0'、'1'、・・・、'9'の値は一つづつ増えていくが、 'a'、'b'、・・・、'z'の値が一つづつ増える保証はない。 と聞きました。 英文字を大文字や小文字に変換する関数が成立するためには、少なくとも大文字と小文字の文字コードの整数値に規則性が必要だと思います。 ということは、文字コード体系が異なると、英文字a,b,c・・・は、一つづつ増える保証は無いが、大文字と小文字簡には共通する規則が保証されているということでしょうか? ご存知の方お願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> '0'、'1'、・・・、'9'の値は一つづつ増えていくが、 'a'、'b'、・・・、'z'の値が一つづつ増える保証はない。 この話では、よくEBCDICが例にあがります。参考URLのソフトで確認すると、アルファベットの並びが連続していない事がわかると思います。 >英文字を大文字や小文字に変換する関数が成立するためには、少なくとも大文字と小文字の文字コードの整数値に規則性が必要だと思います。 大文字と小文字の対応をテーブルとして持っていれば変換は可能です。 >文字コード体系が異なると、英文字a,b,c・・・は、一つづつ増える保証は無いが、大文字と小文字簡には共通する規則が保証されているということでしょうか? 英語版のEBCDICでは0x40だけずれているようですが、日本語では違うようです。というわけで、一般には保証はされていません。
その他の回答 (2)
- gimmick
- ベストアンサー率49% (134/270)
>と言う事は、toupperを使用したプログラムは、常に作動が保証されている訳ではない。という事でしょうか? おそらくtoupperはASCIIコード限定だと思います。
お礼
回答ありがとうございました。
- sha-girl
- ベストアンサー率52% (430/816)
一般的な文字コードsjis、unicode、EUCは1ずつ増えていくと思いますが 半角全角ともに。 unicodeなら半角全角とも固定2バイト sjis、eucだと半角1バイト、全角2バイトということでしょうか?
お礼
回答ありがとうございます。 質問が回りくどく、分かりにくかったと思いますが、知りたいのは、 大文字と小文字の差は、全てのコード体系にて32と決まっているか? と言う事です。 再度、ご存知でしたらお願いします。
お礼
回答ありがとうございます。 大変良く分かりました。 ここからが本当に知りたいことなのです。質問におかしな記述があるかもしれませんがお許しください。 わたしが使用しているVC++6.0において、toupperという関数が有ります。この関数自体C言語で書かれています。 >英語版のEBCDICでは0x40だけずれているようですが、日 >本語では違うようです。というわけで、一般には保証は >されていません と言う事は、toupperを使用したプログラムは、常に作動が保証されている訳ではない。という事でしょうか?