【実行形式】 uni2sj [-v] file [-o outputfile] 【パラメータ】 -v SJISコードからユニコードへの変換をします。 -o outputfile outputfileに出力します。【補足説明】
・ユニコードについて
なお、UTF-16と呼ばれるものは、UCS-2系の文字コードですが、これには様々の形式のもの(UTF16, UTF-16LE, UTF-16BE)があります。 これらは文字コードの各バイトの並べ方の相異を表わしたものです。
UTF-16(UTF-32も)は、プロセッサによってバイトの並びの取り扱い方が異なることから、文字コードの各バイト(オクテットとも)の並べ方にも二種類が生じることに対応したものです。
Windowsの場合、CPUにはインテル製(模倣会社の製品も含む)のものを使用していますが、これは最初のバイトが下位データとなります。
例えば、0x12345678という4バイト長の16進データがあった場合、インテル製のCPUではこれは、0x78, 0x56, 0x34, 0x12という順にデータが格納されます。
(これはリトルエンディアンと呼ばれるものです。)
つまり、逆順にバイトデータが格納されます。
一方、UnixなどのOSでは、0x12, 0x34, 0x56, 0x78というように、最初のバイトが上位データとなります。
(これはビッグエンディアンと呼ばれるものです。)
コンピューター黎明期には、CPUにはインテル製のものとモトローラ製のものがあり、これらの大きな相異として、バイトの並び方が異なっていました。 常識的にはビッグエンディアンの方がバイト配置として正しいように思われるのですが、WindowsがパソコンOSのスタンダードとなったことから、リトルエンディアンが標準的なユニコード(UTF-8)になったようです。UTF-16LEやUTF-16BEの場合には、文書の最初にBOM(Byte Order Mark)と呼ばれる2バイトのデータが付加されます。 UTF-16LEの場合には、これは{0xFF,0xFE}となり、UTF-16BEの場合には、{0xFE,0xFF}となります。