• 締切済み

UTF-8 と SHIFT-JIS について

UTF-8 と SHIFT-JIS について SHIFT-JIS は 半角文字でも全角文字でも 2 バイトとなる UTF-8 は 半角文字でも全角文字でも 1 バイトとなる この認識が正しいかどうかどなたか教えてください!

みんなの回答

回答No.9

>Unicode はちなみに、半角・全角共に 1バイトですか? unicodeも全角3バイトですよ テキストに保存すれば一目瞭然です。 SHIFT-JISのほうがunicoudeやUTF-8より明らかに容量が小さいことが分かります。

全文を見る
すると、全ての回答が全文表示されます。
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.8

> 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%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89%E6%8A%80%E8%A1%93%E5%85%A5%E9%96%80-WEB-PRESS-plus-plus%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/dp/477414164X/ref=sr_1_1?ie=UTF8&s=books&qid=1275841555&sr=1-1

参考URL:
http://ja.wikipedia.org/wiki/UTF-8
全文を見る
すると、全ての回答が全文表示されます。
回答No.7

> 半角・全角を一バイトで保存してくれる文字コードはないのでしょうか。 > なければ、保存してくれるデータベースエンジンはないのでしょうか。 1バイト=8ビットでは最大256種類の文字しか区別できないので、よほど限定的な文字コード規格でも作らないかぎりは無理です。 半角・全角に関わらず固定サイズということなら、(結合文字を使わないという前提で)UTF-32とか、(結合文字やサロゲートペアを使わないという前提で)UTF-16とかありますが、対応しているデータベースエンジンがあるかどうかは知りません。 MySQLには文字コードとしてUCS2がありますが、これが2バイトの固定コードとなっています。(そのかわり、BMP(基本多言語面)に収録されていない文字は使えませんが、MySQLではUTF-8でもBMPの文字しか使えないみたいなので変わらないでしょう)

全文を見る
すると、全ての回答が全文表示されます。
  • don_go
  • ベストアンサー率31% (336/1059)
回答No.6

バイト数と文字数を混同していませんか? テーブルのフィールド定義で、文字数指定する場合とバイト数指定 した場合では、定義する桁数が同じでも、文字コード、全角・半角 によって入力可能な文字数が変わります。 >SHIFT-JIS は 半角文字でも全角文字でも 2 バイトとなる バイト指定の場合 >UTF-8 は 半角文字でも全角文字でも 1 バイトとなる 文字指定の場合(×1 バイト→○1文字)

全文を見る
すると、全ての回答が全文表示されます。
  • uruz
  • ベストアンサー率49% (417/840)
回答No.5

SHIFT-JIS:1~2バイト UTF-8:1~6バイト 詳しくはこちらで http://ja.wikipedia.org/wiki/Shift_JIS http://ja.wikipedia.org/wiki/UTF-8

hennmi1
質問者

お礼

ありがとうございます。 でもそこらへんの読み物は一通り見ました。 見た上で、自分のもっている知識(人から聞いた知識) が違うので どうなっているんだということで質問しました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

いわゆる半角英数字カタカナと全角英数字カタカナなら、 Shift-JISは半角英数字カタカナ1バイト、全角英数字カタカナ2バイト、 UTF-8は半角英数字は1バイト、 半角カタカナ、全角カタカナ、全角英数字ともに3バイトだと思いますが...

hennmi1
質問者

お礼

1バイトではない。。。。 間違えたことを教わったのでしょうか。 もしや私、Unicode と勘違いしているのかなあ。 Unicode はちなみに、半角・全角共に 1バイトですか?

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

> 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バイトが必要です。

hennmi1
質問者

お礼

ものすごい詳しく書いていただきありがとうございます。 ちなみにもう一つ質問にお答えいただければと思うのですが… 記載するので、手があいているときにでもちゃっと返事いただけるとうれしいです。 [質問] 半角・全角を一バイトで保存してくれる文字コードはないのでしょうか。 なければ、保存してくれるデータベースエンジンはないのでしょうか。

全文を見る
すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2
全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

本質的には「全角」「半角」は文字幅を指定する表現なので「バイト数」とは関係なかったりする. それはおいても間違っているが.

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Shift_JISからUTF-8への変換について

    いつもお世話になります。 UTF-8には4バイト文字がありますが、Shift_JIS(CP932)からUTF-8へ変換する際、 Shift_JISでは2バイトで表わされる文字が、UTF-8では4バイトで表わされてしまう文字はありますでしょうか。 宜しくお願いします。

  • shift_jisとutf-8

    お世話になります。 先日より文字コードのことで、頭を悩ましています。 サイト制作の時に、フルCSSを目指し、他の人が作っていたCSSを利用してDreamweaverで制作を始めました。 その際、文字コードがutf-8になっていたのですが、ブラウザによっては文字化けしていおり、宣言の部分をshift_jisに変更しました。 この部分です。<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> ちなみにDreamwerverではデフォルトの文字コードはshift_jisなので、わざわざ変更しない限り、制作したページはすべてshift_jisで書かれているようです。 また、使わせてもらったCSSのページには一行目に@charset "utf-8";が入っていたのですが、よくわからないのでこの行をはずしてみたところ、CSSの設定が反映されない部分が出てきました。(これが原因かわかりませんが、この一行を入れると直ったみたいで・・) そこで質問なのですが、HTMLの方ではshift_jis、CSSファイルではutf-8という設定でも別にかまわないのでしょうか?(統一しなくてもいいのか?) また、一行目の@charset "utf-8";を省くと問題がありますか? 統一した方がいい場合は、制作したものをすべてutf-8に(またはshift_jisに)するにはどうしたらいいのでしょうか? 別に統一する必要がなければ今回はこのままにして、次回からきちんとしたものを作って行きたいのですが・・ どうぞよろしくお願い致します。

  • UTF-8のphpにshift_jisの埋め込み

    shift_jisのcgiを使っています。 shift_jisはもぉ古いとは承知しておりますが、UTF-8への変換が困難なため shift_jisのままで使おうと思っています。 今までは、shift_jisのcgiの結果を一旦 htmlに書きだしたページを、phpファイル内に iframe を使って埋め込みをしておりましたが、 <?php include("http://******.com/hps/*****.cgi?cmd=s&sc=***"); ?> などで、埋め込みが出来ないものかと思案中です。 埋め込み事態は出来ますが、やはり文字化けします。 何か良い方法はないでしょうか。 また、shift_jisの今後は何年後かに使えなくなるとかありますでしょうか。 どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • Dreamweaverで「shift_jis」→「utf-8」

    DreamweaverMX2004を使用しています。 以前に文字コードをshift_jisで作ったhtmlを全てutf-8に変更したいと思っています。 これを行う場合、Dreamweaverのコードビュー画面で <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> ↓ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> と直接手で書き換えるだけで、文字コードはDreamweaverが自動的に保存しなおしてくれるのでしょうか? (もしくはメニューの「ページプロパティ」でエンコーディングを変更できるようですが、どちらの方法にしても) また、これをDreamweaverではなく、テキストエディタ(TeraPad等)で行う場合、どのような方法になりますでしょうか。 また、UTF-8でhtmlを作成する際、shift_jisとは別の点で何か注意しなければならないことはありますか? よろしくお願い致します。

  • Shift_JISで表示できて、UTF-8で表示できない字は何でしょう

    Shift_JISで表示できて、UTF-8で表示できない字は何でしょうか。 Shift_JISで表示できる字で、UTF-8では表示できない字は、どんな字があるでしょうか?

  • charset=UTF-8なのにShift-JISになっちゃいます!

    <META http-equiv=content-type content="text/html; charset=UTF-8"> と記述して、ブラウザ(IE6)で確認したのですが真っ白な画面になり、ブラウザのエンコードを確認した ところShift-JISになっていました。自動選択にしてもShift-JISになってしまいます。 UTF-8でどうしてもウェブを作りたいのですがエンコードがShift-JISにならない方法を教えていただけないでしょうか? 使っているエディタは秀丸です。

    • ベストアンサー
    • PHP
  • VBでShift_JISへurlエンコードできないでしょうか?

    VB6もしくはVBAですが、 文字列をShift_JISへurlエンコードしたいと思います。 utfやeucは方法があったのですが、Shift_JISに関しては 見つかりませんでした。 よろしくお願いします。

  • shift-jisからutf8に変換

    解決に至らなかったので再度お尋ねします。 CGIのコードを見てくださいますか。 http://hotpegasus.bov.jp/mail.txt (必要な部分だけ表示しておりますので、そのままアップしても機能はしません) 改修した箇所は以下のです。 <meta http-equiv="Content-Type" content="text/html;charset=shift_jis"> &jcode'h2z_sjis(*contenido) &jcode'convert(*subject,'sjis'); &jcode'convert(*infor,'sjis'); &jcode'convert(*contenido,'jis'); &jcode'convert(*res_msg,'jis'); print "Content-type: text/html;charset=shift_jis\n\n"; ↓ sjis関連をutf8に書き換え、jcodeの頭文字をJに書き換え <meta http-equiv="Content-Type" content="text/html;charset=utf8"> &Jcode'h2z_utf8(*contenido) &Jcode'convert(*subject,'utf8'); &Jcode'convert(*infor,'utf8'); &Jcode'convert(*contenido,'utf8'); &Jcode'convert(*res_msg,'utf8'); print "Content-type: text/html;charset=shift_utf8\n\n"; require 'jcode.pl'をuse Jcode;に書き換え ※jcode::" となっている箇所はありません 結果 メールフォームはエラーや文字化けは出なくて成功しましたが、メール受信の際、ThunderbirdPortableメーラーでは全て文字化け(文字エンコーディングは「日本語ISO-2022jp」となっています)、ウェブメールのgmailでは内容は文字化けになっていませんが、タイトルが文字化けになっています。 どこが悪かったのでしょうか? 宜しくお願いします。

    • 締切済み
    • CGI
  • shift-jisをUTF-8に読み込ませるには?

    shift-jisにてcsv形式で保存しているテキストファイルの配列(カンマ区切りの3番目)から取り出したものをUTF-8にエンコードする方法をご教示賜りたくご質問させて頂きました。 $Pscrtfl = "./datas/pdtscrt.txt"; open (DT,"<$Pscrtfl"); @Pscrt = <DT>; close (DT); foreach $i (@Pscrt){ @iW = split(/\,/,$i); $Pscrtfl = "./datas/pdtscrt.txt のtxtに入ってる3番目のデータを取り出して、それをUTF-8文字コードに 変換して出力させたいと思っております。 現在のところ私のやってみたこと foreach(@Pscrt){ use Encode; Encode::from_to( $_, 'utf8', 'shiftjis' ); $Pscrtfl .= $_; } とエンコードかけてみるんですが。。。。やはりcsvファイルの文字がUTF-8に変更していないのか、 <!doctype html> <html><head><meta charset="UTF-8">でprintしようとすると、やはり文字化けしてしまいます。 これを文字化けしない方法がお分かりの方おられましたら、ぜひご教示下さいませ。

    • ベストアンサー
    • Perl
このQ&Aのポイント
  • パソコンを新機種に変更し、WINDOWS11を使用しています。しかし、プリンタPIXS MP560を選択すると、WINDOWS10や8.1、4.8、7のみが表示されます。キヤノン製品のプリンタPIXS MP560をWINDOWS11で使用する方法について教えてください。
  • パソコンを新機種に変更し、WINDOWS11を使用しています。ただし、プリンタPIXS MP560を選択する際には、WINDOWS10や8.1、4.8、7のみが表示されます。キヤノン製品のプリンタPIXS MP560をWINDOWS11で使用する方法を教えてください。
  • 新しいパソコンにWINDOWS11をインストールしましたが、プリンタPIXS MP560を選択すると、WINDOWS10や8.1、4.8、7のみが表示されます。キヤノン製品のプリンタPIXS MP560をWINDOWS11で使用する方法を教えてください。
回答を見る