アプリ版:「スタンプのみでお礼する」機能のリリースについて

UTF-8 と SHIFT-JIS について

SHIFT-JIS は 半角文字でも全角文字でも 2 バイトとなる
UTF-8 は 半角文字でも全角文字でも 1 バイトとなる

この認識が正しいかどうかどなたか教えてください!

A 回答 (9件)

本質的には「全角」「半角」は文字幅を指定する表現なので「バイト数」とは関係なかったりする.


それはおいても間違っているが.
    • good
    • 3
    • good
    • 0

> SHIFT-JIS は 半角文字でも全角文字でも 2 バイトとなる



 シフトJISはすべて2バイトです。文字コードに全角半角の区別はありません。慣習的にPC等では1バイト文字を半角、2バイト文字を全角で表示しているだけです。
 ちなみに半角で表示される1バイト文字はシフトJISとは別のコード規格によって定義されているコードなので、シフトJISとは言いません。

> UTF-8 は 半角文字でも全角文字でも 1 バイトとなる

 UTF-8はユニコード文字を8bitの符号系で処理するためのコードですが、1文字が8bit=1byteという訳ではありません。
 ユニコードの符号で第1面の0x7f以下の文字はそのまま1バイトで表されます。いわゆるASCII文字がそれです。次に0x7ff以下の文字は2バイトで符号化されます。次に0xffff以下なら3バイト、第2面の文字は4バイト……というようになり、一般的な日本語文字は3バイト、特殊な文字は4バイトが必要です。
    • good
    • 0
この回答へのお礼

ものすごい詳しく書いていただきありがとうございます。

ちなみにもう一つ質問にお答えいただければと思うのですが…
記載するので、手があいているときにでもちゃっと返事いただけるとうれしいです。

[質問]
半角・全角を一バイトで保存してくれる文字コードはないのでしょうか。
なければ、保存してくれるデータベースエンジンはないのでしょうか。

お礼日時:2010/05/22 21:11

いわゆる半角英数字カタカナと全角英数字カタカナなら、


Shift-JISは半角英数字カタカナ1バイト、全角英数字カタカナ2バイト、
UTF-8は半角英数字は1バイト、
半角カタカナ、全角カタカナ、全角英数字ともに3バイトだと思いますが...
    • good
    • 1
この回答へのお礼

1バイトではない。。。。

間違えたことを教わったのでしょうか。

もしや私、Unicode と勘違いしているのかなあ。

Unicode はちなみに、半角・全角共に 1バイトですか?

お礼日時:2010/05/22 21:08

SHIFT-JIS:1~2バイト


UTF-8:1~6バイト

詳しくはこちらで
http://ja.wikipedia.org/wiki/Shift_JIS

http://ja.wikipedia.org/wiki/UTF-8
    • good
    • 1
この回答へのお礼

ありがとうございます。
でもそこらへんの読み物は一通り見ました。

見た上で、自分のもっている知識(人から聞いた知識) が違うので
どうなっているんだということで質問しました。

お礼日時:2010/05/22 21:07

バイト数と文字数を混同していませんか?


テーブルのフィールド定義で、文字数指定する場合とバイト数指定
した場合では、定義する桁数が同じでも、文字コード、全角・半角
によって入力可能な文字数が変わります。

>SHIFT-JIS は 半角文字でも全角文字でも 2 バイトとなる
バイト指定の場合
>UTF-8 は 半角文字でも全角文字でも 1 バイトとなる
文字指定の場合(×1 バイト→○1文字)
    • good
    • 0

> 半角・全角を一バイトで保存してくれる文字コードはないのでしょうか。


> なければ、保存してくれるデータベースエンジンはないのでしょうか。

1バイト=8ビットでは最大256種類の文字しか区別できないので、よほど限定的な文字コード規格でも作らないかぎりは無理です。

半角・全角に関わらず固定サイズということなら、(結合文字を使わないという前提で)UTF-32とか、(結合文字やサロゲートペアを使わないという前提で)UTF-16とかありますが、対応しているデータベースエンジンがあるかどうかは知りません。

MySQLには文字コードとしてUCS2がありますが、これが2バイトの固定コードとなっています。(そのかわり、BMP(基本多言語面)に収録されていない文字は使えませんが、MySQLではUTF-8でもBMPの文字しか使えないみたいなので変わらないでしょう)
    • good
    • 2

> SHIFT-JIS は 半角文字でも全角文字でも 2 バイトとなる


> UTF-8 は 半角文字でも全角文字でも 1 バイトとなる

そうはなりません。
英数字など、いわゆるASCII文字はSHIFT-JISでもUTF-8でも1バイトですが、
日本語の半角カタカナ、全角かな、漢字はほとんど3バイトになります。

ちょうどいい本が出ているので参考にしてはどうでしょう。
「プログラマのための文字コード技術入門」 技術評論社

http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82 …

参考URL:http://ja.wikipedia.org/wiki/UTF-8
    • good
    • 0

>Unicode はちなみに、半角・全角共に 1バイトですか?



unicodeも全角3バイトですよ
テキストに保存すれば一目瞭然です。
SHIFT-JISのほうがunicoudeやUTF-8より明らかに容量が小さいことが分かります。
    • good
    • 7

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す