web-dev-qa-db-ja.com

utf8とlatin1の違い

utf8とlatin1の違いは何ですか?

114
binbash

TF-8 は世界征服のために準備されていますが、 Latin1 は準備されていません。

Latin1エンコーディングを使用して中国語、日本語、ヘブライ語、ロシア語などの非ラテン文字を保存しようとすると、それらは mojibake になります。 この記事 の入門テキストが役立つ場合があります(Javaを少し知っている場合はさらに詳しく)。

完全な4バイトUTF-8サポートはMySQL 5.5でのみ導入されたことに注意してください。そのバージョンの前は、1文字あたり4バイトではなく、1文字あたり3バイトまでしか使用できません。そのため、BMPプレーンのみをサポートし、たとえば絵文字飛行機。完全な4バイトUTF-8サポートが必要な場合は、MySQLを少なくとも5.5にアップグレードするか、PostgreSQLなどの別のRDBMSに移行してください。 MySQL 5.5+では、 utf8mb4 と呼ばれます。

140
BalusC

Latin1では、各文字は正確に1バイト長です。 utf8では、文字は複数バイトで構成できます。したがって、utf8にはlatin1よりも多くの文字があります(また、共通の文字は必ずしも同じバイト/バイトシーケンスで表されるとは限りません)。

40
sepp2k