TextRTDについて

TextRTDについて

Text Recordは、自由な構文のテキストを含むことごできるレコード

言語コードを含むことができるため
軽量な多言語対応テキストが作成可能

テキストレコードは
NDEF Message の中に複数含めることができるがこれは、多言語対応のため

このため、複数のテキストレコードがふくまれる場合、
複数表示ではなく
ユーザーが求める言語のいずれかのみ表示する

テキストレコードは
NDEF headerに以下の情報がセットする必要がある

TNF
0x01(NFC forum well known type)

そして、タイプ
RTD Text Type(“T” [0x54])

次に、payloadについて
以下の3つのフィールドで構成される

ステータスバイト
ISO/IANA言語コード
実テキスト

まず、ステータスバイトについて
ステータスバイトは
Text RTD のheaderのような役割をするバイト
このバイトは、以下のように定義されている

ビット数
7
0の場合、このテキストのエンコードがUTF-8であることを示す
1なら、UTF-16になる

6
必ず0をセットする
将来のために予約されているビット

5-0
ISO/IANA言語コードの長さを示す
単位はバイト

次に、ISO/IANA言語コードについて
jpやen-USなど
RFC3066
に則った言語コードが入る

また、ステータスバイトには
この言語コードの長さを
ステータスバイトの下位5ビットに含める必要がある
例えば、
jp なら 0x02
en-USなら 0x05
となる
この言語コードは、RFC3066に従わなくてはならない

次に、実テキストについて
これは、UTF-8、または、UTF-16でエンコーディングされた文字列のこと
このエンコーディングは
ステータスバイトで指定したエンコーディングと同じであること

他にもいくつか仕様で決まっていることがあり

テキストの改行コードはCRLFでなければならない

BOM(Byte Order Mark)は許容すること
BOMによりエラーになってはいけない
BOMが省略された場合、
UTF-16 BE(Big Endian)とする

改行(0x0D,0x0A)と,タブ文字(0x08)
を除いて制御文字(UTF-8でいう0x00-0x1F)は
表示する前に削除するべき

マークアップは埋め込まれてはいけない
マークアップはHTMLのようなコードのこと
この場合、text/xhtmlなどのMIMEタイプレコードを利用する

テキストレコードは
MIME-Typeで表すところの
text/plain
format-fixed
と等しくなるよう配慮することが必要

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です