1

私はこの素晴らしいチュートリアルを読んでいました
http://www.joelonsoftware.com/articles/Unicode.html

しかし、UTF-8 がどのようにハイエンド、ローエンディアンのマシンの問題を解決するのか理解できませんでした。1 バイトの場合は問題ありません。マルチバイトの場合、どのように機能しますか?

誰かがもっとうまく説明できますか?

4

2 に答える 2

5
于 2012-05-28T07:00:08.517 に答える
1

UTF-8 ではエンディアンの問題はありません。UTF-16 で問題が発生するのは、2 バイト チャンクのシーケンスをファイルまたは通信ストリームに書き込むときに、2 バイト チャンクのシーケンスをバイト チャンクのシーケンスとして見る必要があるためです。バイト数。UTF-8 はバイト レベルで機能するため、BOM がビッグ エンディアンとリトル エンディアンの両方のマシンでシーケンスを正しく解析できる必要はありません。文字がマルチバイトかどうかは問題ではありません。UTF-8 は、コードポイントのマルチバイト エンコーディングの場合に、文字が来る順序を正確に定義します。

UTF-8 の BOM は、まったく別のものです (つまり、「バイト オーダー マーク」という名前は少し「オフ」です)。「これはUTF-8ストリームになる」ことを明示することです。UTF-8 BOM は一般的に人気がなく、多くのプログラムはそれを正しくサポートしていません。サイト utf8everywhere.org は、将来的に廃止されるべきだと考えています。

于 2012-05-29T04:41:15.677 に答える