WEBサイトで、文字数が1000バイト以内とは、何文字以内なんでしょうか?charsetなどと一緒に考えた場合、charsetと比較できればいいです。よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/10/31 11:40:29
  • 終了:--

回答(5件)

id:azrite No.1

azrite回答回数128ベストアンサー獲得回数12005/10/31 11:45:15

ポイント15pt

日本語の場合は2バイトなので、単純に計算すると1000バイト以内とは500文字以内となります。

ただし、2バイト=全角なので、半角の場合は1バイトの扱いになります。

半角と全角が混ざっている場合だとカウントしずらいので、単純にバイト数の半分(この場合、1000バイト以内→500文字以内)と覚えた方が使いやすいと思います。

charsetと比較して?とのことですが、charsetは文字をセットするということですので、質問の意図が分かりませんでした。。。

id:aw2005

ご回答ありがとうございます。なお、SJIS EUC JIS UTFなどのキャラクター設定した場合、バイト数によってそれぞれ違うのかなあと思っていたので質問してみました。

2005/10/31 11:54:13
id:T-pon No.2

T-pon回答回数424ベストアンサー獲得回数42005/10/31 12:13:56

ポイント15pt

http://www.shuiren.org/chuden/teach/code/main3.htm

文字コード入門―ASCIIとJISローマ字―

下記URLによると、


ASCIIを元に、国際規格のISO 646が制定されました(ISOは、International Organization for Standardization 国際標準化機構の略)。但し、ASCIIで定義された文字のうち、12文字(上表で薄緑色の背景になっているもの)をそれぞれの国の事情に応じて、適当な文字列に変更可能となりました。


日本と同じく、各国で変更領域を独自に書き換えを行ったため、同じ文字が違うビット列で表現されるという問題が発生しました。そのため、それぞれの文字コードを指定したり切り替えたりする方法が求められるようになったのです。


とのことです。


従って、英数字、半角カナは1バイトですが漢字、ひらがななどいわゆる全角文字は2バイトになります。ただし、Unicodeという文字セットは、各国の文字を混在して表示させる(文字コード切り替えせずに)ことを目的として作られたので、全ての文字は2バイトです。


詳しくは参考URLの2つめに、2バイト系エンコードとなる文字コードがリストアップされています。(ただし、1/2バイト系の混在するJISやISOも分割して記載されています)

id:aw2005

日本語は、2バイトですね。ありがとうございます。

2005/10/31 12:42:22
id:nitscape No.3

nitscape回答回数526ベストアンサー獲得回数02005/10/31 12:18:31

ポイント15pt

これはWEBサイトがどのようにバイト数をカウントしているか(どのように文字を扱っているか)によります。


SJISでしたら、半角文字1バイト、全角文字1バイト、改行1バイト(もしくは2バイト)になります。


UTF8の場合は、半角文字1バイト、改行1バイト、全角文字2~3バイト、改行1バイト(もしくは2バイト)になります。しかし内部でUTF16などに変換してからカウントしている場合は、半角全角ともに2バイト、改行は2バイト(もしくは4バイト)になります。


EUCは(ちょっと自信ありませんが)半角1バイト、全角2バイト、改行1バイト(もしくは2バイト)になると思います。


文字に必要なバイト数は以上のようになりますが、「何文字以内」という言葉が、通常生活を意識したもの(改行を文字とカウントしない)ですと、全部半角で1000文字以内です。WEBサイトでの「何文字以内」は改行も文字数にカウントされますから行の数も文字数に入れる必要がでてきます。

たいていは改行数をカウントしますが、よく考えられたWEBサイトでは改行数を(一定の数まで)カウントしなかったり、文字数の表記を全角文字にしている可能性もあります。またページのエンコードがSJISでも内部処理でEUCやUTF16などほかの文字種に変換して処理している可能性もあります。。。まぁこのようなことはまれだと思いますが。

id:aw2005

参考になります。うーん。

2005/10/31 12:44:23
id:Kumappus No.4

くまっぷす回答回数3784ベストアンサー獲得回数1852005/10/31 12:31:29

ポイント15pt

http://www.kanzaki.com/docs/jcode.html

���{���ƕ����R�[�h

正確にはcharsetで変わると思います。JISの場合が一番複雑で文字の切り替えのところにエスケープシーケンス(ESC+$+@,ESC+$+B,ESC+(+B,ESC+(+Jの4通り)が挟まってくるので切り替えが多いほど文字数に対するバイト数が増えます。

他のcharsetでは日本語(というか多バイト文字)とアルファベットなどの1バイト文字で文字数に対するバイト数が異なります。特にUTF-8が結構いやらしくて、文字によって1バイト~6バイトの長さを持ちます。したがってスキャンしてみないと単純にバイト数から文字数は得られません。

ですので文字数が何バイトという定義自体があまり意味を持ちません。書いた人がShift-JISあたりを勝手に想定していたとして2(漢字が2バイトだから)で割って500文字程度、のつもりでいるのかな?と推定するぐらいしかできませんね。たぶん内部のバッファやデータベースの都合でそういうことを書いたんでしょうが…。

id:aw2005

ありがとうございます。目安がわかりました。

2005/10/31 12:45:41
id:shak No.5

shak回答回数84ベストアンサー獲得回数22005/10/31 18:34:06

ポイント30pt

自分で試した結果:

「あ」x500で

SJIS:1000バイト

JIS:1006バイト

EUC:1000バイト

Unicode:1002バイト

UTF-8:1503バイト

UTF-8N:1500バイト

文字コードによって若干の(UTFは約1.5倍?)違いがあるみたいです。

ちなみに、改行コードによっても違うみたいです。

SJISにおいて。改行x500

CR+LF:1000バイト

CRのみ:500バイト

LFのみ:500バイト

改行コードは説明が利きます。これらは表記されるとき、

CR→¥r

LF→¥n

とファイルには記述されています。英数字二文字で1バイトなので、単純計算でいいですね。

ちなみにWindowsはだいたいCRLF、LinuxはLFが一般的だったと思います。

文字コードですが、こんどはバイナリで見てみます。

「あ」のバイナリ

SJIS:82 A0

JIS:24 22 (先頭と末尾には1B 24 42の記述。JISを示すものか?これで6バイト分大きくなっている模様。)

EUC:A4 42

Unicode:42 30 (先頭にFF FEの記述。これで2バイト分大きくなっている。)

UTF:E3 81 82 (これは3組で一文字。バイト数は1.5倍。また、先頭にEF BB EFの記述。これでプラス3バイト。)

UTF-8N:E3 81 82 (先頭には何もなし。)


つまり、1000バイトまで、というのは、

SJIS、EUCは全角500文字。JISは全角497文字。Unicodeは全角499文字。UTF-8は332文字。UTF-8Nは333文字までです。

以上です。

参考になりましたでしょうか?

id:aw2005

おー!すごいですね。大変参考になります。ありがとうございました。

2005/10/31 18:41:17

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません