Aviutlで使用できる文字コードについて紹介します。
(このページは「分かる人が分かればいいや」と思って書いているので、分からない人はテキトーに読み飛ばしてください。)
Aviutl → Windows-31Jのみ
AviutlはWindows-31J
という名前の文字コードに対応しています。
なので、例えば動画ファイルを読み込む場合は、その動画ファイルのファイル名がWindows-31J
である必要があるし、その動画ファイルのパスにはWindows-31J
以外の文字が含まれてはいけません。
- 使えるファイル・パス名例
- hoge123(半角文字)
- HOGE123(全角英数字文字)
- ほげ(ひらがな)
- ホゲ(かたかな)
- 動画(JIS第一水準、第二水準くらいの漢字)
- 使えないファイル・パス名
- (絵文字)
- (JIS第三水準、第四水準くらいの漢字)
- (古い時代の文字など)
- (特殊な記号)
つまり、絵文字や一部漢字と言った「Unicodeにしかない文字」は使えません。
拡張編集のテキストオブジェクト → Unicode(U+FFFFまで)が使える
AviutlはWindows-31J
にしか対応していないようなのですが
拡張編集のテキストオブジェクトに入力する場合は、メモ帳などのテキストエディタを介してコピペすると、なぜかUnicodeのコードポイント「U+FFFF」までのUnicode文字が使えるようになります。
例えば、①~⑳までの丸付き数字はWindows-31J
でも定義されているので、Aviutlのテキストに入力してもきちんと表示されますが
㉑~㊿(U+3251~U+32BF)までの丸付き数字は、Unicodeにしかない文字なので、入力しても「?」に変換されてしまいます。
しかし㉑~㊿を
- 一旦メモ帳に入力する
- メモ帳からコピーする
- Aviutlに貼り付ける
という風にすると、なぜか入力できてしまいます。
正直、なぜこのようにすると入力できるのか分からないのですが、UnicodeのU+FFFFまで(2バイトまで)入力できる点から察するに
- Aviutl(開発言語:C++)で使われている文字のデータ型がワイド文字(2バイト)だから
- exoファイルの
text=
の部分で保存されるテキストの形式がUTF-16LE(最大4バイト)だから- 例えば、(ほっけ)という文字を入力すると、「・・」と表示されてしまいますが(画像1枚目)、
入力した状態でタイムライン上で右クリック → ファイル → オブジェクトファイルのエクスポート
から.exoファイルとして出力して、text=
の部分を見てみると、きちんとUTF-16のバイト列として保存できていることが確認できます。(画像2枚目)
▲ちなみに「67d8 3dde」は、ビッグエンディアンに直すと「d867 de3d」なので、UTF-16のサロゲートペアのコードポイントにも一致しています。
- 例えば、(ほっけ)という文字を入力すると、「・・」と表示されてしまいますが(画像1枚目)、
などが関係しているのかもしれません。
例えば、IMEでUnicode文字を入力するとAviutlに「そんな文字は知らない!」と拒否されますが、コピペだとIMEを介さないからAviutlのチェックをスルーできる・・みたいな感じなのかもしれません。そしてスルーした結果、Aviutlでは2バイトまで保存できる機能があるので(ついでに言うとUTF-16で)、コピペだと保存できちゃうと。そんな感じかもしれません。
(もし詳しい方がいればコメント欄などで教えていただけると嬉しいです・・)
ちなみに、絵文字(例えばのようなもの)はすべてU+1F600以降に収録されているので、必然的にすべて4バイトになります。 なのでAviutlでも使えません。
このページの情報は以上です。
コメント