人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: aw2005
●カテゴリ:ウェブ制作
✍キーワード:webサイト バイト 比較
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● azrite
●15ポイント

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

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

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

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

◎質問者からの返答

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


2 ● T-pon
●15ポイント

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も分割して記載されています)

http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%B...

文字コード - Wikipedia

◎質問者からの返答

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


3 ● nitscape
●15ポイント

これは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などほかの文字種に変換して処理している可能性もあります。。。まぁこのようなことはまれだと思いますが。

◎質問者からの返答

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


4 ● くまっぷす
●15ポイント

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文字程度、のつもりでいるのかな?と推定するぐらいしかできませんね。たぶん内部のバッファやデータベースの都合でそういうことを書いたんでしょうが…。

http://euc.jp/i18n/charcode.ja.html#chap7

文字コードの話

◎質問者からの返答

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


5 ● shak
●30ポイント

自分で試した結果:

「あ」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文字までです。

以上です。

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ