2009-08-11 12 views
7

私はWebフォーム(UTF-8として)を使用してユーザー入力を受け付け、MySQL DBに保存し(UTF-8文字セットを使用)、後で(UTF-8としてコード化された)テキストファイルを生成します。 UCS-2のようなものではなく、UTF-8を使用してテキストが破損する可能性があるのでしょうか? UTF-8はこのような状況で十分ですか?UTF-8はアジア言語の読み書きに使用できますか?

答えて

14

それ以上の場合は、おそらくを使用することをお勧めします。

テーマに関するいくつかの素晴らしい読み:

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) by Joel Spolsky

+0

リンクをありがとうございます - 私はそれを少し前に読んでいます。私はさまざまなエンコーディング(固定長の文字と可変長の文字)に精通していますが、何らかの理由でUCS-2がより多くの文字を表現できるという印象を受けました。私は間違っていたと思う。 :) –

+1

UCS-2とUTF-16は間違っていることがよくありますが、コードポイントは同等ですが、UTF-16ではすべてのUnicode文字が16ビットに収まるわけではないという代理コードポイントがあります。ウインドウズとJavaは、偶然、実際にはUTF-16、_not_ UCS-2を使用しています。 – bdonlan

+0

UCS-2には固定長文字が含まれていますが、UTF-16には可変長文字が含まれています。どちらも16ビットのチャンクで動作します。 (UCS-2は廃止されていることにも注意してください) –

2

UTF-8は、任意のUnicode文字を表すことができます。 UTF-8には問題ありません。

実際、UTF-8はUCS-2ではできない文字を表すこともできます(UCS-2はU + 0000〜U + FFFFしか表現できませんが、UTF-8、UTF-16、UCS-コードポイント)

1

私が知る限り、UTF-8はこれらの以前のすべてのUnicodeバリエーションを網羅するように設計されているので、UCS-2よりもうまく使用してください。 http://www.unicode.org/versions/Unicode5.1.0/を参照し、5.0の書籍の章のサイドバーを見てください。部品9〜12はあなたが何をしているのかを理解する必要があります。

10

多くのアジア言語のテキスト(ラテン文字よりも多く)で作業している場合は、UTF-16を検討するとよいでしょう。 UTF-8は、Unicodeの文字の範囲全体を正確に表すことができますが、ほとんどがASCIIのテキストに最適化されています。 UTF-16は、Basic Multilingual Plane全体にわたってスペース効率が良いです。

しかし、UTF-8は、「十分に良い」と確信しています。たとえば、UTF-16以上のUTF-8を使用しているため、破損は起こりません。

0

Devanagariと一緒にすごくうまく動作します。

関連する問題