ネットが遅くてイライラしてない!?

「技術者向けコンピュータ」には素人の私ですが、掲題の件は此処が適当と勝手に判断して質問いたします。最適なカテゴリーがあれば教えてください。

平仮名も全角カナも概ね五十音順に文字コードが割り当てられています。
だから、コード昇順だと「ぁあぃいぅう・・・わゐゑをん」「ァアィイゥウ・・・ワヰヱヲン」と並びます。
ところが、半角カナの「ヲ」は他のどの半角カナよりも若い文字コードが割り当てられていることに、最近になって気付きました。
調べてみると、半角カナは文字コード昇順で「ヲァィゥェォャュョッ-アイウ・・・ワン」(此処では便宜上 全角カナで示しましたが、すべて半角カナとご理解ください。半角カナの「ヰ」「ヱ」は存在しない)と並びます。つまり、「ヲ」は「ワ」と「ン」の間に来ない!

半角「ヲ」に他のどの半角カナよりも若い文字コードが割り当てられた経緯をご存知の方がいらっしゃいましたら、その理由を教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

言われて初めて気がつきました。


たしかに、半角の「ヲ」の文字コードは「ワ」と「ン」の間に
ありませんね。「ヲ」は日本語では頻繁に利用される助詞でもあり、
利用頻度が少ないとも思えません。
なぜなのか私も興味を持ったので、少し調べてみました。

明確な情報はありませんでしたが、たぶん
以下の考えでよいだろうと思います。

まず、半角カタカナの文字コードは、JIS X0201という
規格で決められました。この規格は今から40年以上前の
1969年に制定されたものです。
(参考)
http://ja.wikipedia.org/wiki/JIS_X_0201

この頃は、今のようにコンピュータは発達しておらず、
もちろんカナ漢字変換などありません。
「キーボードで押したキーをコンピュータに認識させて、
文字コードに割り当てる」という機能を、どうやったら
簡単に実現できるかが重要だった時代です。

前述のJIS X0201の文字コード表と、
今あなたの目の前にあるキーボードに印字されている
カナ文字を見比べてみてください。
なにか気がつきませんか?

文字コードA1~AFに割り当てられている半角カナ文字
。「」、・ヲァィゥェォャュョッ
は、全てShiftキーを押しながら入力する文字です。
そして、文字コードB0以降の半角カナ文字は、全て
Shiftキー不要で入力する文字です。

つまり半角の「ヲ」は、キーボード配列上、
文字コードA1-AFに割り当てると都合がよかったという
理由で「ワ」と「ン」の間から外れたのだと思います。
(Shiftキーを押すと文字コードの左4ビットは"A"になる
というルールがあると、キーボードが作りやすかったの
かもしれません。今の技術ではどうでもいいことですけど)

では、なぜ「ヲ」はShift+「ワ」で入力する位置に
割り当てられているのか?です。
昔は、いろいろな配列のキーボード(タイプライタ)があり、
Shiftなしで「ヲ」を入力する配列もありましたが、
結局、現在の標準になっているJIS配列は、
http://www.ykanda.jp/input/jis/jis.htm
にある通り、大正12年に山下芳太郎さんが決めた
カナタイプのキーボードがベースになっているようです。

つまり、山下のおじいちゃんが「ヲ」をShift付きで入力させる
ことにしたからというのが根っこの理由になると思います。
    • good
    • 0
この回答へのお礼

「カナ文字の配列は大正12年にカナモジカイの山下芳太郎が決めたカナタイプ のキーボードがベースになってい」るとは思いも寄りませんでした。
キーボード上のレイアウトと関係なく、古代(?)であればイロハ順、近代であれば五十音順に文字コードを割り当てるのが、日本人として当然と思い込んでおりました。米人が(恐らく、タイプライタのキー配列と関係なく)ABC順にしたように。
「ヲ」を先頭に持ってくるなんてぇ、と呆れ返っております。(^_^)

色々と調べていただいて、ありがとうございました。

お礼日時:2011/05/15 00:58

最初は半角の「ヲ」は必要性の少なさか当時の機械の性能的限界の影響かでなかったが、あとで追加でコードを振られたたときにコード表に空きがあって、半角カタカナの並びである「ア」の前になったんじゃなでしょうか。

    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QMS SQLServer のSQLで文字列の前にN:

MS SQLServer のSQLで文字列の前にN: をつけることをよく見かけますが、
「N:」とはいったいどんな意味なのでしょうか?
教えて下さい。

Aベストアンサー

T-SQLでの話かと思いますが・・・。NCHAR/NVARCHAR型という、型(タイプ)があるのですが、これらは、夫々、national character/national character varying(SQL-92での表記法)の意味を持っています。夫々、固定長文字列(Unicode)/可変長文字列(Unicode)です。
NVARCHARはSQL-Server2000では4000文字まで、VARCHAR2は8000文字まで格納可です。(つまり、1/2になるということです)

さて、N'***' とT-SQL内で書くと、''内の文字をUnicodeで表現されたものとして処理する、という意味になります。Nは、nationalの略です。ですから、日本語を使おうとするとNは必須になる、という事ですね。

こんな感じでつかいます。#N'Unicode 文字列'

Qエクセル関数で日付かどうかの確認?

ワークシート関数でセル内が日付かどうか調べるものはないでしょうか?
VBAのIsDateなら存じておりますが。

Aベストアンサー

日付を表すデータは、セルの値としては、単なる数値なのですが、どういう種類のセルの書式が設定されているかを調べることはできます。
調べたいセルがA1だとして
=cell("format",A1)

"D1"になれば概ね日付だと判別できます。
時刻を含めたものにする場合は、
Dで始まることをチェックすればいいかも。
詳しくは、CELL関数のヘルプを参照してください。

Q変数名の付け方

変数名の前にアンダーバー「_」をつけて「_hensu」などどしている変数名がありますが、このアンダーバーはどんな意味があるのでしょうか。
昔からある何かの習慣なのでしょうか。

Aベストアンサー

インスタンス変数につける場合がありますね。
逆に、「ローカル変数につける!」 という人も見かけますし…
とりあえず、スコープの違いを分かりやすくする目的であることが多いです。

オープンソースのコードや業務で見るコードでも、Javaではあまり多数派ではないと思います。
よく見かけるのは、JavaScriptなどのアクセス修飾子がない言語です。
「"_"がついてるメンバには直接アクセスしない」などのルールを積極的に使ったりします。

QSQL Server のキャラクターセット(内部文字コード)は何処で定義するのでしょうか?

SQL Server超初心者です。(Oracleについては約1年ちょっとの経験はあります)どうぞよろしくお願いします。
今回SQL Server2005 を使って簡単なシステムを構築する事になりました。
SQL Serverが扱う文字コートについて教えてください。
Oracleを使っていた時の経験としてDB内部のキャラクターセットと
クライアントで使う文字セット(NLS_LANG)を意識しておかないと、いろんな「文字化け」問題に遭遇した時に対応できませんでした。
きっとSQL Serverにおいても同じような事ではないかと思いここに質問させていただきます。
以下2点についてどなたかコメント願います。
1.(Oracleでいうキャラクターセット)はどこで定義するのでしょうか?
2.OracleでいうNLS_LANGに相当するものはあるのでしょうか?
 (ひょっとしたらマイクロソフト製品なのでサーバもクライアントもCP932固定なのでしょうか?)

根本的にはシステム構築する上で『極力文字化けに遭遇したくない』思い出このような質問をさせていただきました。
『文字化け』について注意点などありましたら合わせてコメントいただければ助かります。
以上よろしくお願いします。

SQL Server超初心者です。(Oracleについては約1年ちょっとの経験はあります)どうぞよろしくお願いします。
今回SQL Server2005 を使って簡単なシステムを構築する事になりました。
SQL Serverが扱う文字コートについて教えてください。
Oracleを使っていた時の経験としてDB内部のキャラクターセットと
クライアントで使う文字セット(NLS_LANG)を意識しておかないと、いろんな「文字化け」問題に遭遇した時に対応できませんでした。
きっとSQL Serverにおいても同じような事ではないかと思いここに質問...続きを読む

Aベストアンサー

Windowsのロケールの設定を日本語にした状態でSQLServerをインストールした場合、cp932がデフォルトの照合順序になります。照合順序については参考URLをご覧下さい。

SQLServerではわかりませんが、PostgresではJDBCドライバ部分で変換していたように記憶しています。ODBCドライバではAutoTranslateという機能があります。

このため、ODBC接続で何も考えずにvarcharを使用するとcp932になります。

参考URL:http://www.microsoft.com/japan/msdn/sqlserver/sql2005/bb330962.aspx

QVIEWの元のテーブルのindexって有効なのでしょうか?

VIEWの元のテーブルのindexって有効なのでしょうか?
MYSQLサーバのバージョンは5.0.77です。
どうぞよろしくお願いします。

Aベストアンサー

ビューの基表に、有効活用できるインデクスがあれば、インデクスは活用されます。

>例えば元のテーブルに「hoge_id(index)」があり、
>VIEWテーブルが「vtable」だとします。

>SELECT * FROM vtable WHERE hoge_id = 値
>または、
>SELECT * FROM vtable LEFT JOIN atable ON vatble.hoge_id = atable.id
>(atable.idもindex)

>などとした場合、hoge_idのindexが有効で高速に結果が返ってくるということでよろしいのでしょうか。

表の母体データ件数が相当に少ない(例えば、数百件など)とか、重複キー値が多量に存在するといった場合は、RDBMSのオプティマイザが、「インデクスを使うより、テーブルスキャン(表のデータを全件サーチ)した方が速い」と判断し、インデクスを利用しない場合もあります。

主キーなどユニークなキーでの「=」条件や範囲条件などで、母体データからある程度絞り込んだ検索をするなら、インデクスの活用で母体データが大量に増えても、一定の性能を出せます。

ビューの基表に、有効活用できるインデクスがあれば、インデクスは活用されます。

>例えば元のテーブルに「hoge_id(index)」があり、
>VIEWテーブルが「vtable」だとします。

>SELECT * FROM vtable WHERE hoge_id = 値
>または、
>SELECT * FROM vtable LEFT JOIN atable ON vatble.hoge_id = atable.id
>(atable.idもindex)

>などとした場合、hoge_idのindexが有効で高速に結果が返ってくるということでよろしいのでしょうか。

表の母体データ件数が相当に少ない(例えば、数百件など)とか、重複キー値...続きを読む


人気Q&Aランキング