• ベストアンサー

文字コードについて

Windowsでよく使う文字コードはSJISなのでこれについて調べたら shift-jis、cp932、Windows-31Jのような名称がある事がわかりました。 これらの違いは調べてわかったのですが、プログラムで文字コードを指定する時、プログラムによって上の文字を上の文字を使い分けなければいけませんがなぜこのような現象が起こるのですか? 各アプリケーションで指定する文字コード名を勝手に定めているように思えます。上の文字コードはISOやIANA等に登録されているみたいですが、文字コードを登録するための統一された一つの組織に登録するわけではないのですか? またエディタなどでこれらを区別する際にはどのようにして判別しているのですか? これらの質問のどれかが分かったらその質問だけで構わないので教えてください。

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

  • ベストアンサー
noname#111181
noname#111181
回答No.1

>> プログラムによって上の文字を上の文字を使い分けなければいけませんがなぜこのような現象が起こるのですか? << プログラム言語に実装されているか否かという問題です。 たとえばご質問にあった shift-jis、cp932、Windows-31J などは、JavaやPHPには実装されていますが、VBやPostgreSQLにはありません。 >> 文字コードを登録するための統一された一つの組織に登録するわけではないのですか? << そういうわけではありません。 ISOで統一しているコードが多いのですが、たとえばシフトJISに対応するISO規格はありません。さらに、携帯文字コード(顔文字)に至っては、キャリアによってバラバラという状態です。 >> またエディタなどでこれらを区別する際にはどのようにして判別しているのですか? << 先頭の何文字かを読み込んで、コードの出現頻度などから、矛盾のないコード体系を選んでいます。 ですから、極端に短いマルチバイト・コンテンツだと、エンコードを間違えることがあります。

noroli
質問者

お礼

なるほどよく分かりました。 ありがとうございます。

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

その他の回答 (1)

  • A88No8
  • ベストアンサー率52% (834/1602)
回答No.2

>これらの違いは調べてわかったのですが、プログラムで文字コードを指定する時、プログラムによって上の文字を上の文字を使い分けなければいけませんがなぜこのような現象が起こるのですか?  上の文字コードは、マイクロソフト社の規定です。 これは初期の MS-DOS というオペレーティングシステムから16bit Windows OS、32bit Windows OSが開発された時期に応じてビジネスの展開に都合がよいように拡張されてきたということです。 >文字コードを登録するための統一された一つの組織に登録するわけではないのですか?  技術の進歩はビジネスの目的で単一の企業が先陣を切り他社が違う方式を林立し、競争し淘汰されてデファクトスタンダードが確立し、標準化機構が定義するという成長モデルが自由主義社会のルールのようです。  マイクロソフト社起源以外の文字コードを参考URLに上げておきます。

参考URL:
http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89
noroli
質問者

お礼

ありがとうございます。 参考になりました。

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

関連するQ&A

  • Ruby 文字コード判別

    NKF.guessで文字コードを判別し、そのコードがWindows-31J以外だったら エラーが出るようにしたいです Shift-JISの場合だと if(NKF.guess(str) == NKF::SJIS) この様に記述をして判別させています SJISの部分をCP932に変えて試してみましたが駄目でした 宜しくお願いします

    • ベストアンサー
    • Ruby
  • VB2005でJIS拡張漢字の各文字コードを取得する方法

    ある関数に文字列を渡して各文字コードを取得するプログラムを作成しようとしています。 基本的な文字のコードは取得できるのですが、JIS拡張漢字のほとんどが正しく取得できません。 失敗している文字は内部的に「?」(3F)となってしまいます。 例:拡張漢字のコード値(SJIS:81B2)を変換するとコード値が「3F」になってしまう。(テキストエディタなどで文字化けすると「?」に化けるのと同じなのかな?) 正しく文字コードを取得する方法をご存知の方、またヒントなどありましたらよろしくお願いします。 【環境】WindowsXP     VisualBasic2005 【プログラムの流れ】例:SJISコードを取得する場合 文字列を受取る→1文字取得→System.Text.EncodingでSJIS指定のバイト型配列文字に変換(文字コードを取得)

  • 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. 短い文章では文字コードを誤認識する場合も あるようですが、どうしたら正しく認識 させられますか? 指定した文字コードで保存できず困っています。

  • 文字コードsjisをUTF8に書き換えたい

    CGIの勉強中の者です。 文字コードはSJISで保存しているCGIをUTF8コードに換えるには何が必要でしょうか? HTMLならmeta内をSJISからUTF8に変更し、TeraPadなどのテキストエディタでUTF8に保存すればオッケーなんですが。 CGIの場合はHTMLと違って、換えるには複雑なのでしょうか? CGIプログラムの中では以下の「sjis」を「UTF8」に書き換えし、UTF8で保存しましたけど、文字化けが出てます。 <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"; 宜しくお願いします。

    • 締切済み
    • CGI
  • 「エディタで保存するときに文字コードを指定する」??

    タイトルの通りなのですが、エディタで保存するときに文字コードを指定する、という意味がよく分かりません。 例えば、私はTeraPadを使っているのですが、その場合、「文字コード指定再読み込み」というところで、SJISやEUCなどを指定するのですが、これは何をしているのか?そもそも分かりません。 質問自体がぼやけててすみません。それくらい全体的に分かっていないのだと思います。 よろしくお願いします。

  • MySQL文字コード

    DB情報をHTMLで表示する場合に、mb_convert_encoding()で指定する文字コード MySQL5.1 PHP5 HTML - shift_jis MySQL の文字セット UTF-8 Unicode (utf8) MySQL の接続照合順序: ujis_japanese_ci フィールドの照合順序 ujis_japanese_ci PHPプログラムでDB情報取得後にSJISに変換 mb_convert_encoding($String, "SJIS", "●●●"); ●●●の文字コードを何を指定すればいいのかがわかりません。 EUCを書くとうまくいってるような気もしますが、なぜEUCでうまくいく のかもわかりません。 ご教授下さい。

    • 締切済み
    • PHP
  • 文字コードも小文字で入力してもいいのか?

    XHTMLの正しい書き方の本を見ました。 XHTMLは小文字で書くと書いてありましたが、 Shift_JISなど文字コードは大文字と小文字を区別して書いていました。 文字コードは区別してかかないといけないのでしょうか?

  • 文字コードについて教えてください。

    ホームページを作成するときに指定する文字コードをどうしたらいいのか迷っています。 ウインドウズ環境でホームページを作る際、入力された文字は秀丸などの特別なソフトを使わなければ自動的にShift JISコードになると思うのですが、この場合、タグを <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS"> と指定するべきでしょうか?それとも、 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-2022-jp"> と指定するべきでしょうか? ISO-2022-JPで指定した場合、ブラウザが必ずしも自動判別してくれないこともあるのでしょうか? また、CGIスクリプトはShift JISで入力するとエラーを起こすことがあると聞いたことがあります。 ホームページを作成する場合には、常にISO-2022-JPかEUCの文字コードで作成するようにしたほうがいいのでしょうか? いろいろ検索して調べてみたのですが、どうもよくわかりません。宜しく御願いします。 なお、gooのホームページを閲覧するときも頻繁に文字化けしています(文字コードがEUCに指定されていないのはなぜでしょうか?)。

  • 確実に文字コードを自動判別させる方法ありますか?

    エディタでは正常に日本語が見えているのですが、 METAタグでcharset=x-euc-jp を指定しても、必ず文字化けするHTMLがあります。 どうやら、文字コードが混在しているようなんです。 どこで文字コードが混在しているのかわからない為、 文字コードを統一できず困っています。 文字コードを混在した状態からEUC-JPとLFへ変換できるソフトはありますでしょうか? 又、ブラウザにEUCだと確実に判別させる裏技的な方法はないでしょうか?

    • 締切済み
    • CSS
  • 文字コードを何にしようか悩んでいます

    phpプログラムを勉強し始めて間もないのですが、文字コードで悩んでいます。utf8かsjisかujisのどれがいちばん適しているのか良くわかりません。今まではホームページを作っても文字コードなど考えたこともなかったのですが、これを機にmeta部分でも設定しようと思います。 php、mysql、phpmyadmin、webサイト(パソコン版とモバイル版)で制作する場合、文字コードはすべて統一したほうが良いのでしょうか?みなさんはどんな設定で作っていますか?

    • ベストアンサー
    • PHP