• ベストアンサー

文字コードによる表記

非常に初心者的な質問なんですが、 文字コードのS-JISで「、」を表記する場合、 「0x8140」と表記するのが正しいのでしょうか? xの部分は区数を入れるのか、そもそも0xの部分は必要なのか 調べてもよくわかりませんでした。 どうかお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • neuron-x
  • ベストアンサー率52% (139/266)
回答No.4

文字コードには様々な種類があって、その一つがShiftJISです。ShiftJISでは、半角文字=1Byte、全角文字=2Byteで表します。 C言語で16進数を表すにはプレフィックスに"0x"を付けます。 int a = 10; // aには、数値の10が入ります int b = 0x10; // bには16進数の10(つまり16)が入ります。 char型には1Byteのデータを格納することができます。下は、半角文字の'A'をchar型に格納しています。'A'の文字コードは0x41ですので両方とも同じ意味になります。 char x = 'A'; char x = 0x41; 次に、全角文字を格納する場合、2バイトの領域が必要になります。この領域に「、」を入れようとした場合、次のようになります。 char multi[2]; multi[0] = 0x81; multi[1] = 0x40; 話が長くなりましたが、 (1) "0x"は16進数を表すために必要。 (2) 表記は0x8140でも問題なし。   ただし、実際には0x81、0x40のように分割して格納が必要。 と言うことになります。

gocho_kusu
質問者

お礼

>ShiftJISでは、半角文字=1Byte、全角文字=2Byteで表します。 その項目すら知りませんでした・・・。 自分の勉強方法を考え直します。 詳しい説明ありがとうございました!

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

その他の回答 (3)

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.3

文脈に因りますね。 もともとC言語のchar型は基本的に8ビットでS-JISの文字コードを保管するには足りません。 使っている処理系(コンパイラやライブラリなど)でshort型などでS-JISの1文字を表現するような処理になっているところなら0x8140のような表記でも良いでしょうが、char配列で扱うなら{0x81, 0x40}や"\x81\x40"のように1バイトずつ区切って扱わなければいけないでしょう。

gocho_kusu
質問者

お礼

前半>確か、S-jisは2バイト(全角?)だからですよね。 回答ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

C言語のソース中の話だよね? C言語では「0x」は、これに続く数値が16進数である事を表している。これは言語仕様というものだ。例えば ・「5555」は五千五百五十五 (十進数) ・「05555」は二千九百二十五 (八進数) ・「0x5555」は二万一千八百四十五 (十六進数) という風にソースプログラム中に書かれている「数文字」をコンパイラにどう解釈してもらいたいかを指定するために0や0xをつける。  さて次に、様々なコンピュータシステムで文字を表示するための「文字コードとフォント」という2つの概念を理解する必要がある。  文字コード、正確には文字エンコーディングというものは、コンピュータ上で、ある文字をある数値に割り振ろうというもので、日本語ではJIS、区点、Shift JIS、EUC-JPなどがある。  君が言うShift JISでは、十六進数で言う8141という数値に「、」が割り振られているようだ。  これを画面上に出すのがフォントで、例えば8141は確かに「、」だが、フォントのこの番号に「○」なんていう「絵」を入れても良いわけだ。コンピュータが認識するのは数値やけど、画面に表示されて人間が認識するのは絵やからね。  つまり、「SJISで「、」を表記する」というのは、目的によって変わる。画面上に出したいのか、ネットワークに流したいのか、ファイルに保存したいのか、文字列中の区切りとして認識したいのか。  何をしたいのか、もう少し詳しく教えてもらえるかな?

gocho_kusu
質問者

お礼

詳しい解説痛み入ります。 これは、格文字コードで名前などを表記するのにどう文字コードを使うといいか、 と思いこの質問にいたりました。 「、」は例えの話で聞かせていただきました。 それと、 > これを画面上に出すのがフォントで、例えば8141は確かに「、」だが、フォントのこの番号に「○」なんていう「絵」を入れても良いわけだ。コンピュータが認識するのは数値やけど、画面に表示されて人間が認識するのは絵やからね。 の項目で思ったんですが、これは8141に○をつけても結果的に表示されるものは変わりないということでしょうか? もう1つ、 > つまり、「SJISで「、」を表記する」というのは、目的によって変わる。画面上に出したいのか、ネットワークに流したいのか、ファイルに保存したいのか、文字列中の区切りとして認識したいのか。 の >ネットワークに流したいのか、ファイルに保存したいのか の部分がどうも把握できません。 そもそもの文字コード使いどころがわかってないのだと思います。 プログラムで printf(”%c”,a); こういう時に使われるくらいしか思い出ません。 重要な点があるというのなら、 教えてくださると本当に助かります。 どうかよろしくお願いします。

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

まず、正しくは、0x8141 のようです。 この標記自体は間違いではないでしょう。 0x は、シフトJISとは直接関係なく、16進標記を表すものです。これがないと、八千百四十一と区別がつかないので、明確に区別がつくとき以外はつけておいた方が良いでしょう。 C/C++ のソースであれば、これがないと、全く違った数値になります。

gocho_kusu
質問者

お礼

なるほどー!なるほどー! 回答ありがとうございました。

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

関連するQ&A

  • 文字コードについて

    文字コードについて調べています!! ASCIIやunicode,jis,shift-jisなど色々なコードがあると思うのですが、 そもそも、パソコンには上記のコードや、表示⇒エンコード で選ぶことの 出来る、各文字コードの文字コード表が格納されているんでしょうか? ちょっとまだ勉強を始めたばかりで曖昧な質問になってしまったのですが、この疑問をどうして解消したくて… 色々と検索しても上記なようなことは探し出すことが出来なかったので どなたか教えてください!! よろしくお願いします!!

  • 文字コード 16進表示ツール

    ファイル全体の文字コードを euc→s-jisへ変換するツールはよくあるのですが, 入力した文字について eus,s-jis等での16進数表示をしてくれるツールはあるのでしょうか.

  • TeraPadの文字コード

    TeraPadの文字コードについて教えてください。 1. TeraPadで扱える文字コードは Shift-JIS、JIS、EUC、Unicode、UTF-8、UTF-8N の6種類あるようですが、このEUCとEUC-JPは 同じものですか? 2. Shift-JISで保存すると、TeraPadの下の部分に 表示される文字コードがSJISとなります。 これはShift-JISのことですか? 3. 短い文章では文字コードを誤認識する場合も あるようですが、どうしたら正しく認識 させられますか? 指定した文字コードで保存できず困っています。

  • 文字コードチェックについて

    題記の文字コードチェックについて教えていただきたいのですが、 入力情報に対して、S-JISのある範囲内の文字コードに該当していればエラーとするような文字コードチェックをしたいのですが、 どのようにすればよいでしょうか? 下記のコードも文字コードのチェックなのですが、これだとUnicodeでのチェックになってしまいます。 どうにかしてS-JISでチェックしたいのですがやり方がわかりません。。 よろしくお願い致します。 コード---------------------------------------- public class CodeCheck {  public static void main(String[] args) {   String str = "a";   char ch = str.charAt(0);   if(ch == 0x2460) {    // エラー処理   } else {    // 正常処理   }  } } ---------------------------------------------

    • ベストアンサー
    • Java
  • 文字コードに関する質問

    こんにちわ. 私は現在, 文字コードについて勉強しております. まずはじめに, Ascii コードを理解しました. 続いて JIS X 0208 について調べているところです. ここで, 疑問が湧きました. 一般的な説明では, "JIS X 0208 は 2 バイト文字( 以降, 1 バイト 8 ビットと仮定 ) である." とのことなのですが, これは "JIS X 0208 で 2 の 16 乗の文字を収録できる"という解釈で正しいのでしょうか? また, ネット上の説明によれば, JIS X 0208 では, 約 6800 字程度の文字が収録されているとのことなのですが, なぜ, 2 の 16 乗のすべてを使わないのですか? 将来的な拡張の可能性を考えてのことなのでしょうか? マシンスペック的な問題なのでしょうか? よろしくお願いいたします.

  • 文字コードについて

    前回の質問では解決しないまま誤って締め切ってしまいました。すいません。(その後無事解決しました) また質問で申し訳ないのですが、文字コードについて質問をさせてください。 「set names sjis」というのはどういう意味があるのでしょうか?この命令を使えばそのときだけその文字コードで使えるのだと思っていたのですが、phpからmysql_queryでその命令を送ったところ、逆にその命令を送ったときだけ文字化けが発生してしまいました。(phpファイルの文字コードはシフトJISです) その命令を送らなかったときはmysql側の設定にかかわらず文字化けは発生しませんでした。 また話は変わるんですが、例えばレンタルサーバーなどでサーバーのMySQLの設定がシフトjisでなかった場合は、シフトjisは使えないのでしょうか?携帯対応のサイトを作りたいのでシフトJISにしたいのですが…… 以上2点よろしくお願いします

    • ベストアンサー
    • MySQL
  • 文字コードについて

    よろしくお願いします。 ホームページを作成しました。というより現在作成中です。 htmlの記述を確認しようと以下のサイト様より文法チェツクをしたところ、以下のように表示されました。 line 5: 指定されている文字コードセットは `Shift_JIS` ですが、実際のコードは UTF-8 のようです。 私は、文字コードの部分はShift_JISにしておきたいのですが、 このようなエラーはどのように、どの部分を変更すれば良いのでしょうか? 全く分からずに困っております。 どなた様か、ご指導の程よろしくお願いします

    • ベストアンサー
    • HTML
  • Windowsの標準文字コードについて

    標準文字コードはシフトJISとされていますが、 例えば、windowsでメモ帳を使って文字を書いて、保存をした時。 保存する時の文字コードは自由に選択できますよね。 この時点だと、どこにシフトJISコードが使われているのかはサッパリ分かりません。 それで考えたのですが、 文章を保存する時では無く、 メモ帳に書いている時に使われている文字が、 シフトJISなのでしょうか?(その文字を16進数としてみた時にシフトJISの文字コードになっている) つまり、 もともと、windows上でwebページのフォームに文字を入力するとか、 メモ帳で文章を書くと、 シフトJISとして書いている事になるのでしょうか?(シフトJISコードに対応した16進数で書いている) それを、例えばメモ帳ならシフトJISコードを違うコードに変換して保存する機能が付いている ブラウザには、その機能は無いから、フォームからはシフトJISコードとしてのデータしか遅れない。 そう考えると、 windows上では入力する全ての文字がシフトJISコードという事になり、 標準文字コードがシフトJISという言葉にも納得がいくのですが、 上記の理解で正解なのでしょうか? よろしくお願いします。

  • encode指定の表記について(Ruby 1.9)

    仕事でのデータ処理用にRubyで小さなプログラムを書いて使用しています。 今まで1.8系を使用していたのですが、そろそろ1.9系への移行をしたいと考えております。 そこで気になったのがソースの最初に書く # -*- coding: utf-8 -*- の表記です。 この"utf-8"の部分に書く文字コードの表記一覧(?)はどちらを参照すればよろしいのでしょうか? 例えば、私はWindows環境での使用になるのでシフトJISコードの場合が多いのですが、書き方として"SHIFT-JIS"、"Shift-JIS"、"SJIS"等のうち、どの表記が正解なのか判りません。 非常に初歩的な質問で申し訳ありませんが、ご教示いただければ幸いです。

    • ベストアンサー
    • Ruby
  • 文字コードって結局どれを使うの?

    HTML初心者です。 いまいち文字コードについて理解できていません。 結局のところS-JISを使えばいいんでしょうか?UTF-8を使えばいいんでしょうか? 何をもって決めるのですか? ちょっと調べてもよく理解できませんでした。 簡単にご説明いただけると幸いです。 ちなみにwindowsxp、dreamweaverを利用しています。 Javascriptなども使う予定です。

    • ベストアンサー
    • HTML