プロが教える店舗&オフィスのセキュリティ対策術

xhtml,cssにてウェブデザインをしています。
数年仕事をして参りましたが、文字コードについての理解が乏しいままでしたので、こちらで質問させて頂きます。

xoopsサイトを制作した時に文字化けが出て以降、
サーバーの文字コードと同じ文字コードで作成し
metaタグ内で指定するようにしてきました。

今回、あるウェブサイトを多言語に修正することになり、
unicodeを使いたいと思います。
この時に、サーバーの文字コードとあわなくなる事は
問題ないのでしょうか。

閲覧者のブラウザで文字コードが判別できれば問題がないのか、
サーバーの文字コードとあわなければいけないのか、
どのような場合にサーバーで文字コードの問題がおきるのか、
基本的な理解がないためにわかりません。

それから、ウィキペディアを調べていて UTF-8がUnicodeの符号化という欄に記載されていて、理解はできなかったのですが、UTF-8とUnicodeは関連しているのでしょうか?

少し羅列になってしまい申し訳ありませんが、
わかる範囲でお答え頂けたらと思います。
よろしくお願いします。

A 回答 (2件)

当方、ウェブデザイン経験は6ヶ月程度の為に確定的なことは申し上げれませんが



サーバーの文字コードというのは、カレントで扱っている文字コードのことでしょうか?
(WindowsであればS-Jisだから、S-Jisで作成していた?)
であれば、OSが取り扱う事ができる文字コードであれば問題ないと思います。

もしサーバー側OSがUnicodeを扱えなければ、そもそもファイルを配置してサイトにしようとしたところでthmlのなんらかのエラーがでるか、
ぐちゃぐちゃに化けたサイトになるような・・・
最近のサーバーでUnicodeを扱えないという事はないでしょうからその辺は問題ないでしょう。
問題はブラウザ~WEBサバですね。

Unicodeでこのサイトを検索しても
色々と問題があるようです。(特にIE)
http://oshiete.orangepage.net/qa2889577.html

とはいえ、多言語化対応ということなので
Unicodeが便利ですね。
http://oshiete.orangepage.net/qa5594189.html

ご質問内容は
(1)サーバーでUnicodeが扱えるのか?
(2)UTF-8とUnicodeは関連しているか?(つまり、文字集合間で気にすべきところはあるか?)

という事が伺えるので、(2)は他の方にお任せするとして、
(1)については、WEBサバがUnicodeを扱えるなら。ですね。

結局、HTTP ヘッダに「このサイトはUnicodeですよ」ってブラウザ側にhtmlを送信するので、受け取り側が「知るかこのやろう」なんてことでS-jisやらなんやらでhtmlを可視化しようとすると化けてしまう・・という事になります。

ちなみに、よく使われる「文字コード」という言葉ですが
文字集合(文字セット)と文字のエンコード方式とで分けて考える玄人の方もいらっしゃると思うのでご参考程度に。

解決方法ではなく申し訳ないですが、コメントが無かったので少し書き込んでみました。
ではでは

参考URL:http://www.atmarkit.co.jp/fxml/rensai/xmlwomanab …
    • good
    • 0
この回答へのお礼

さっそくのご回答、どうもありがとうございます。
ご回答を足がかりに勉強を進めてみます。
何が分からないのか分かってない状態なので、
少しずつ整理していきたいと思います。
とても参考になります。

お礼日時:2010/01/15 16:11

> この時に、サーバーの文字コードとあわなくなる事は


> 問題ないのでしょうか。

サーバーがデフォルトでどの文字コードを使っているのかと,コンテンツの文字コードは別物です。
同一サーバー内で複数の文字コードを共存させる事も当然できます。

> どのような場合にサーバーで文字コードの問題がおきるのか、
> 基本的な理解がないためにわかりません。

サーバーサイドで文字列処理を行った場合に,
・サーバーサイドプログラムが正しく文字コードを取り扱えない
・データベースが正しく文字コードを取り扱えない
などの問題が起きる事があります。

また,HTTPのContent-Typeヘッダに誤った文字コードを指定すれば,それは文字化けの原因になります。

> それから、ウィキペディアを調べていて UTF-8がUnicodeの符号化という欄に記載されていて、理解はできなかったのですが、
> UTF-8とUnicodeは関連しているのでしょうか?

関連しています。
Unicodeというのは単純に文字に番号を振っただけなので (Unicodeは符号化文字集合),
そのままではコンピュータで扱えません。
その番号をそのまま数値として使う (UTF-32),ちょっとだけ工夫して使う (UTF-16),
といった方法で,「その番号をどの番号に対応させるのかの対応付け」が必要になります。
この「対応付け」が文字符号化方式,もしくは文字コードと呼ばれるものです。

で,UTF-8はこの文字コードに相当します。
ABCあいう
という文字列 (U+0041 U+0042 U+0043 U+3042 U+3044 U+3046) は,UTF-8では,
41 42 43 E3 81 82 E3 81 84 E3 81 86
というオクテット列に変換されます。

なお,HTML 4やXHTMLでは符号化文字集合にISO-10646-1 (ほぼUnicodeと同じ) を指定しているため,
HTML 4の文書で文字符号化方式としてShift_JISを使ったとしても,
「ISO-10646-1符号化文字集合の文字をShift_JISという文字符号化方式でオクテット列に符号化した文書」
という扱いになります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!