0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Java の Charset のバイトオーダーとBOM

Last updated at Posted at 2022-10-01

(この記事は 地平線に行く とのマルチポストです)

Java のサポートされているエンコーディングの一覧を見ていると、UTF-16, UTF-16BE, UTF-16LE, x-UTF-16LE-BOM とあって、なにが違うんだろうと思って調べてみました。

まとめると、読み・書き時のバイトオーダー (BO) 1 と書き込み時の BOM (Byte Order Mark) の違いでした。

  • 読み込み時のバイトオーダー
    • BE / LE が付かないものは、BOM から自動的に判定
  • 書き込み時のバイトオーダー
    • BE / LE が付かないものは、BIG バイトオーダー
  • BOM の有無
    • UTF-8 に「BOM あり」で書き込むものはない2
名称 読み込み時
バイトオーダー
書き込み時
バイトオーダー
書き込み時
BOM
UTF-8 - - x
UTF-16 AUTO BIG o
UTF-16BE BIG BIG x
UTF-16LE LITTLE LITTLE x
x-UTF-16LE-BOM AUTO LITTLE o
UTF-32 AUTO BIG x
UTF-32BE BIG BIG x
X-UTF-32BE-BOM BIG BIG o
UTF-32LE LITTLE LITTLE x
X-UTF-32LE-BOM LITTLE LITTLE o
  1. バイトオーダー = エンディアン

  2. バイトオーダーに関わらず同じ内容になるので、本来は UTF-8 に BOM (Byte Order Mark) は不要

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?